【问题标题】:Dynamically added, strongly typed partial views do not see the Model动态添加的强类型局部视图看不到模型
【发布时间】:2011-04-25 02:45:33
【问题描述】:

这是我的场景:我有一个带有下拉列表的视图,当用户在列表中选择一个项目时,我想动态插入一个局部视图,该视图使用与父视图相同的模型进行强类型化。我认为这是一个相当常见的场景,并且很容易做到,但我可能弄错了(或者只是没有经验)。

我尝试的方法是使用这个脚本 (jQuery),它会在列表 'onchange' 事件上触发:

function loadPartial() {
    var id = $("#MyClass_MyClassId").val();
    var prop = $("#MyClass_MyProperty").val();
    $("#partials").load('/MyController/LoadPartial/?val=' + prop);
}

此脚本调用一个控制器操作,该操作返回适当的局部视图并将其插入给定的 div(id = partials)。

问题:动态插入的局部视图中的模型似乎是空的。

这是我插入的强类型分部视图之一(分部视图使用的模型与父视图模型相同):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNamespace.Controllers.MyViewModel>" %>

<div class="editor-label">
<label>Enter Data*</label>
</div>

<div class="editor-field">
    <%=Html.TextAreaFor(model => model.MyClass.MyProperty)%>
    <%=Html.ValidationMessageFor(model => model.MyClass.MyProperty)%>
</div>

我不确定这种方法是否最好,或者是否有更好的方法(例如使用 RenderPartial)。我不想在控制器操作中重新生成模型,因为我会丢失任何验证消息。我确实对符合我要求的解决方案进行了相当彻底的搜索,但我无法找到一个,因此任何建议/建议将不胜感激。

【问题讨论】:

标签: asp.net-mvc partial-views


【解决方案1】:

您是说这是有效还是无效?您的问题令人困惑。

这是我将使用的技术,所以我不确定问题是否存在。

【讨论】:

  • 很抱歉给您带来了困惑。只要用户从下拉列表中进行选择并显示正确的部分类,一切都会正常工作。问题是在部分视图中,我似乎无法访问父视图模型。我的问题是,如果这是最好的方法,如何将父视图模型传递给部分视图,或者是否有另一种方法?我希望这可以解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多