这是我的场景:我有一个带有下拉列表的视图,当用户选择列表中的项目时,我想动态插入一个部分视图,该部分视图使用与父视图相同的模型进行强类型化。我认为这是一个相当常见的场景,并且很容易做到,但我可能错了(或者只是缺乏经验)。
我尝试的方法是使用这个脚本(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)。我不想在控制器操作中重新生成模型,因为我将丢失任何验证消息。我确实做了一个相当彻底的搜索,找到了符合我要求的解决方案,但我找不到一个,所以任何建议/建议都会受到高度赞赏。
答案 0 :(得分:0)
你是说这个有用还是不行?你的问题很混乱。
这是我会使用的技术,所以我不确定问题是什么。