首页>Program>source

我正在尝试将不同的模型从视图传递到局部视图.我对他们和两个不同的视图模型都有两个单独的控制器动作.但是当我从视图中调用局部视图时,它给了我错误

传递到字典中的模型项的类型为'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>

}

最新回答
  • 14天前
    1 #

    您使用的是正确的方法,但没有传入正确的参数

    您可能想要这样尝试:

    @Html.Partial("~/[path_to_root_only_if_exists]/_CreateUniFunctionPartial.cshtml", new Application.ViewModels.PartialViewModel())
    

    如果您不传递模型,它将自动从其父模型中获取模型,在您的情况下为

    Application.ViewModels.Model1ViewModel
    

  • 14天前
    2 #

    您需要做的一件事是重新生成模型或利用模型中的属性.例如:

    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>
     }
    

  • 14天前
    3 #

    这很简单.有一个html指令可以呈现部分视图.以下是代码示例:

    @Html.Partial("nameOfPartial", Model)
    

    现在这里的模型可以来自您的主控制器。

    或者您可以定义一个带有partialviewresult作为返回类型的新控制器动作,并尝试在页面中呈现它,如下所示:

    @{Html.RenderAction("Someaction", "somecontroller");}
    

  • jQuery onClick捕获元素的ID
  • javascript:在IE8中创建脚本标签