[英]pass a different model to the partial view
我試圖從視圖中將不同的模型傳遞給局部視圖。 我有兩個獨立的控制器動作,它們和兩個不同的視圖模型。 但是當我從視圖中調用局部視圖時,它會給我錯誤
傳遞到字典中的模型項的類型為“Application.ViewModels.Model1ViewModel”,但此字典需要“Application.ViewModels.PartialViewModel”類型的模型項。
我這樣稱呼它:
@Html.Partial("_CreateUniFunctionPartial")
視圖中的模型調用是
@model Application.ViewModels.Model1ViewModel
和部分視圖文件中的模型是
@model Application.ViewModels.PartialViewModel
我不知道如何傳遞局部視圖,所以它不會給出這個錯誤。
編輯
局部視圖
@model Application.ViewModels.PartialViewModel
@using (Html.BeginForm("partialview", "ApplicationDetail", FormMethod.Post))
{
<div class="form-horizontal">
<h4>UniFunctionViewModel</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.detail, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.detail, new { @placeholder = "Further Information" })
@Html.ValidationMessageFor(model => model.detail)
</div>
</div>
</div>
}
你正在使用正確的方法,但沒有傳遞正確的參數
你可能想這樣試試:
@Html.Partial("~/[path_to_root_only_if_exists]/_CreateUniFunctionPartial.cshtml", new Application.ViewModels.PartialViewModel())
如果你沒有傳入一個模型,它會自動從它的父模型中獲取一個,在你的情況下是
Application.ViewModels.Model1ViewModel
您需要做的一件事是重新生成模型或使用模型中的屬性。 例如:
public class OuterViewModel
{
public InnerViewModel InnerViewModel { get; set; }
}
public class InnerViewModel
{
public string SomeProperty { get; set; }
}
在首頁,您可以接受OuterViewModel,然后將InnerViewModel傳遞給Partial。
Outer.cshtml:
@model OuterViewModel
@Html.Partial("_InnerPartial", Model.InnerViewModel)
_InnerPartial.cshtml:
@model InnerViewModel
@using (Html.BeginForm("Inner", "Controller"))
{
<div>
@Html.AntiForgeryToken()
@Html.TextBoxFor(m => m.SomeProperty)
<input type="submit" value="Save" />
</div>
}
這很簡單。 有一個html指令可以呈現局部視圖。 以下是代碼示例:
@Html.Partial("nameOfPartial", Model)
現在,模型可以來自您的主控制器。
或者您可以使用partialviewresult作為返回類型定義新的控制器操作,並嘗試在頁面中呈現它,如下所示:
@{Html.RenderAction("Someaction", "somecontroller");}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.