读书人

MVC上自定义控件的有关问题

发布时间: 2013-01-06 15:44:48 作者: rapoo

MVC下自定义控件的问题
以前用aspx时写的附件上传自定义控件,如图。
MVC上自定义控件的有关问题

调用的时候:

<uc1:AttachmentMore ID="AttachmentMore1" runat="server" />


AttachmentMore1.PersonId = CurrentUserInfo.PersonID;
AttachmentMore1.ModuleCode = BLL.ModuleCode.工作日志;


这个相信大家都很熟悉的哈。

今天尝试在MVC下实现这个功能,举步维艰呐,一下子没法适应。

问题1:
控制器中的ViewBag无法在自定义控件视图中获取,请问怎么解决?
控制器:
public ActionResult More(int menuid)
{
var AchmentSet = GetAttachmentSet(menuid);
ViewBag.MaxSize = 10240;//限制附件上传的大小 默认10M
ViewBag.LimitType = "";//限制附件上传的类型
if (AchmentSet != null)
{
ViewBag.MaxSize = AchmentSet.MaxSize;
ViewBag.LimitType = AchmentSet.NotAllowFileType;
}
return PartialView();
}


ascx视图:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script type="text/javascript" language="javascript">
/*
ShowAddFile('<%= this.ClientID%>');

ShowAddImage('<%= this.ClientID%>');

if (typeof (upload_limit) == "undefined") {
upload_limit = 1;
}

if (typeof (attachMaxLength) == "undefined") {
attachMaxLength = "@ViewBag.MaxSize";
}
if (typeof (limit_type) == "undefined") {
limit_type = "@ViewBag.LimitType";
}*/
$(function () {
alert("@ViewBag.MaxSize");
});
</script>

用了@后发现根本就不会变黄色呢。

问题2:自定义控件参数设置的问题。
之前aspx时写的控件,可以在调用页面的cs代码中像操作服务器控件一样,名称.属性,直接赋值。
那在MVC下,怎么去做这个事情呢?因为参数比较多,所以觉得很纠结。

问题3,有没有现成的MVC下可用的自定义附件上传控件,我想做个参考。

分不多了,全给出来,希望有人可以解答一下,非常感谢。
[解决办法]
我几年没用过webform了,如果没记错的话,@这是razor独有的语法,webform页面中不能这么用吧?你前面的<%=>这种用法才是webform中的
[解决办法]
1.

(1)你在创建的时候要选择 mvc 3(或者其他版本)视图用户控件(ASPX). 要添加这个作为UserControl

(2)你的@是嵌套在<script>脚本里

估计你创建的应该还是webform的应用!

2.mvc中的用户控件加载两种方法解决.

(1):js -可以尝试用JQuery

$("#层id").load("/usercontrol/More");


(2):注册方式


<%@ Register TagPrefix="thesame" TagName="more" Src="~/usercontrol/More.ascx" %>

调用 <thesame:more runat="Server" />

3.我这里只有自己 修改第三方后的js版的 。 基于mvc3.
[解决办法]
在mvc下没有用过 服务器控件。 都是div+css


你看看这个能帮到你不。

http://social.msdn.microsoft.com/Forums/zh-CN/295/thread/afadbed5-ad62-4e53-8e97-5f601da4b4d5/
[解决办法]
@这是razor,后缀是cshtml.和webform不一样.
webform的用户控件 换到mvc里其实也就是一个cshtml.
@Html.Partial("cshtml")
或者
@{Html.RenderAction("action","controller")}


[解决办法]
引用:
引用:1.

(1)你在创建的时候要选择 mvc 3(或者其他版本)视图用户控件(ASPX). 要添加这个作为UserControl

(2)你的@是嵌套在<script>脚本里

估计你创建的应该还是webform的应用!

2.mvc中的用户控件加载两种方法解决.

(1):js -可以尝试用JQuery
JavaScript c……


email!

读书人网 >asp.net

热点推荐