加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 当调用Controller.PartialView时,ASP.NET MVC3

发布时间:2020-12-16 00:29:21 所属栏目:asp.Net 来源:网络整理
导读:我将渲染部分视图作为Ajax请求的一部分。 当我从视图中调用部分视图时: int i=0;foreach(var rule in Model.Rules) { @Html.Partial("ValidationRuleRow",rule,new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix
我将渲染部分视图作为Ajax请求的一部分。

当我从视图中调用部分视图时:

int i=0;
foreach(var rule in Model.Rules) {
    @Html.Partial("ValidationRuleRow",rule,new ViewDataDictionary { 
        TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = string.Format("Rules[{0}]",i) } })   
    i++;
}

我可以设置HtmlFieldPrefix以允许适当的模型绑定。

我希望用户能够通过ajax快速添加一个新的ValidationRuleRow,如:

$.ajax({
    type: "GET",url: "/Monitors/NewMonitorValidationRule",success: function (data,textStatus,jqXHR) {
        var element = $(data);
        $("#ValidationRuleContainer").append(element);
    }
});

所以我在控制器中有一个动作来获取HTML:

public ActionResult NewMonitorValidationRule()
{
    ValidationRule rule = new ValidationRule{Id = TempSurrogateKey.Next};
    var view = PartialView("ValidationRuleRow",rule);
    // CODE TO SET PartialView field prefix
    return view;
}

返回的HTML没有前缀。在控制器中的Action中调用PartialView时是否有设置前缀?

解决方法

更好的是,您可以在控制器动作中设置ViewData.TemplateInfo.HtmlFieldPrefix,
public Actionresult MyAction()
{
   ...
   ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";

   return PartialView("MyView",viewmodel);
}

视图模型中不需要ViewBag或属性。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读