0

我有一个客户索引页面,它采用 CustomerIndexViewModel 来填充页面,其中包含客户列表、请求所用的时间以及许多其他信息。

我在 CustomerIndexViewModel 中有一个 CustomerSearchArgsModel。

public class CustomerIndexViewModel : BaseIndexViewModel
{
    public IEnumerable<Customer> Customers{ get; set; }
    public double RequestTime { get; set; }
    public CustomerSearchArgsModel CustomerSearchArgsModel { get; set; }
    public OtherTypes OtherType {get;set;}
}


public class CustomerSearchArgsModel
{
    public string CustomerID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

在我的客户索引页面上,我想要类似的东西 -

@model CustomerIndexViewModel

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@using (Html.BeginForm("Index","Customer",FormMethod.Post, new { id="searchSubmit"}))
{
    @Html.LabelFor(model => model.CustomerSearchArgsModel.ConsumerID)
    @Html.EditorFor(model => model.CustomerSearchArgsModel.ConsumerID)
    @Html.LabelFor(model => model.CustomerSearchArgsModel.LastName)
    @Html.EditorFor(model => model.CustomerSearchArgsModel.LastName)
    @Html.LabelFor(model => model.CustomerSearchArgsModel.FirstName)
    @Html.EditorFor(model => model.CustomerSearchArgsModel.FirstName)

    <input type="submit" value="Search" />
}

我想将输入的值返回到 CustomerSearchArgsModel 中 Customer 控制器上的 Index (POST) 方法。

但我不知道如何返回与页面顶部定义的模型不同的模型。

4

1 回答 1

2

您可以将“searchSubmit”表单放在局部视图中。然后将model.CustomerSearchArgsModel传递给局部视图。确保 model.CustomerSearchArgsModel不为空;否则,你会得到一个例外。

索引页

@Html.Partial("_search", model.CustomerSearchArgsModel)

_search 局部视图

@model CustomerSearchArgsModel
@using (Html.BeginForm("Index","Customer",FormMethod.Post, new { id="searchSubmit"}))
{
    @Html.LabelFor(model => model.ConsumerID)
    @Html.EditorFor(model => model.ConsumerID)
    @Html.LabelFor(model => model.LastName)
    @Html.EditorFor(model => model.LastName)
    @Html.LabelFor(model => model.FirstName)
    @Html.EditorFor(model => model.FirstName)

    <input type="submit" value="Search" />
}

这种方法的问题是您将在 ConsumerID 的文本框中显示 0 值。要解决这个问题,您可以使用 Html.Action 而不是 Html.Partial。

希望这可以帮助。

于 2013-08-15T22:48:14.737 回答