我有一个带有List的模型绑定的ASP.NET MVC视图
在我的视图内部,我有一个局部视图,该视图应处理其他操作的结果,并应在操作完成后进行更新。
但是部分视图总是崩溃,因为它试图消耗主视图的模型。
@model List<planemOsIdConsumer.Models.CommonDtosRole>
@{
ViewBag.Title = "Rollen und Rechte";
}
<table>
<thead>
<tr>
<th>Your Column Header Name</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<label>@Html.Display(item.Name)</label>
</td>
</tr>
}
</tbody>
</table>
@using (Ajax.BeginForm("Create", "Role", new AjaxOptions
{
InsertionMode = InsertionMode.Replace, //target element(#mydiv) will be replaced
UpdateTargetId = "mydiv"
}))
{
<table cellpadding="5">
<tr>
<td>Rollenname:</td>
<td><input type="text" name="Name" id="roleNameVal" placeholder="Neue Rolle" /></td>
</tr>
</table>
<br />
<label id="resultLabel"></label>
<input type="submit" value="Submit" id="btn_click" />
<div id="mydiv">
@{
Html.RenderPartial("_CreateResult");
}
</div>
}
局部视图
@model planemosIdUi.Dto.Result
@{
ViewBag.Title = "_CreateResult";
}
@{
if (Model?.Success == true)
{
<label>Erstellt</label>
}
else if(Model?.Success == false)
{
<label>Fehler</label>
}
else
{
<label>Do something</label>
}
}
如果可以的话,部分视图应该从主视图中忽略模型。
答案 0 :(得分:1)
Html.RenderPartial("_CreateResult", new planemosIdUi.Dto.Result());
答案 1 :(得分:0)
如果您尝试在执行某些操作后显示部分视图,则可以使用ajax
将部分视图内容附加到mydiv
id上,否则每次加载页面时,部分视图都会渲染。
$.ajax({
cache: false,
async: false,
type: "POST",
contentType: "application/json",
url: "/ControllerName/ActionName",
success: function (result) {
$("#mydiv").html(result);
}
});
在控制器中,您可以将部分视图返回为
public ActionResult ActionName()
{
planemosIdUi.Dto.Result model=new planemosIdUi.Dto.Result();// model object to partial view
return PartialView("_CreateResult",model);
}
答案 2 :(得分:0)
您的_CreateResult.cshtml要求使用Result.cs类型的模型,并且必须在Html.RenderPartial方法内部传递该模型,这是它的第二个参数。
Html.RenderPartial(“ _ CreateResult”,“传递类型为Result.cs的模型”);