Asp.net mvc 使用型号';属性作为操作参数的类型

Asp.net mvc 使用型号';属性作为操作参数的类型,asp.net-mvc,asp.net-mvc-5,model-binding,Asp.net Mvc,Asp.net Mvc 5,Model Binding,我有一个名为MainViewModel的ViewModel,其中有MainFilterViewModel类型的属性。我的操作是否可以像public ActionResult actionName(MainFilterViewModel filter)一样返回返回视图(new MainViewModel(){…}),这样我就不必添加整个ViewModel类了 public class MainViewModel { public MainFilterViewModel Filter {ge

我有一个名为MainViewModel的ViewModel,其中有MainFilterViewModel类型的属性。我的操作是否可以像
public ActionResult actionName(MainFilterViewModel filter)
一样返回
返回视图(new MainViewModel(){…})
,这样我就不必添加整个ViewModel类了

public class MainViewModel
{
    public MainFilterViewModel Filter {get;set;}
    public List<GridItem> Rows {get;set;}
}

public class MainFilterViewModel
{
    public string Name {get;set;}
    public String City {get;set;}
}

顺便说一句,我尝试搜索模型内部类型/属性的操作参数,但未找到任何结果。

您是否只想使用MainFilterServiceModel或MainViewModel的详细信息更新视图的某个部分?在这种情况下,请使用部分视图和AJax调用当按下submit按钮时,我需要获取过滤后的数据并更新数据表div,但我不需要使用AJax。当然不需要,但它会使页面不会闪烁/刷新,因为此时您正在向服务器发送数据,基本上是往返的。如果您使用ajax,并且只更新了“数据表”div部分,将为您的用户提供更友好的体验,但最终,这是您的选择。您可以使用FormData collection,也可以编写自定义模型绑定:简短回答-是。但是您需要指定视图名称(与初始GET方法中使用的视图相同)-
返回视图(“…”,model)。但是,使用ajax只返回过滤后的集合的部分视图将获得更好的性能。
@using (Html.BeginForm("ActionName", "TheController", FormMethod.Post, new { Id = "formPrincipal" }))
{
    @Html.TextBoxFor(m => m.Filter.Name)
    @Html.TextBoxFor(m => m.Filter.City)
    <button type="submit" class="btn btn-success" id="btnFilter" value="Filter" />
}
<div id="data-table">
    @* Looping the Rows collection *@
</div>
public ActionResult ActionName(MainFilterViewModel filter)
{
    // Request data from repository based on filter parameter
    var model = new MainViewModel();
    // fill model with info from the repository
    return View(model);
}