MVC下自定义控件的问题
以前用aspx时写的附件上传自定义控件,如图。
调用的时候:
<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")}
[解决办法]
email!