Html.EditorFor - 如何使用基于post参数

时间:2015-03-12 22:19:08

标签: c# asp.net razor

我的ActionResult看起来像这样:

public ActionResult Index(string engineer, string contactName, 
                          string company,  string searchKeyword)
{

然后它返回一个基于下面运行的LINQ查询的视图,它使用传入的参数(engiener,contactName等)来确定返回的模型。

我在视图中生成一个表单,该表单用作将值发布到控制器以过滤结果的表单。目前它看起来像这样 - 代码工作正常,搜索框工作,但这似乎是不好的做法,我不能在Html.Editor中添加一个类:

<div class="form-group">
        <div class="editor-label">
            @Html.Label("Contact Name")
        </div>
        <div class="editor-field">
            @Html.Editor("contactName")
        </div>
    </div>
    <div class="form-group">
        <div class="editor-label">
            @Html.Label("Keyword Search")
        </div>
        <div class="editor-field">
            @Html.Editor("searchKeyword")
        </div>
    </div>

我希望能够使用EditorFor,因为这似乎是最佳实践,但由于参数不在模型中,我不知道如何在语句的第一部分引用它们?

@Html.EditorFor(model => what Do I put here!?)

1 个答案:

答案 0 :(得分:0)

您需要在模型中拥有这些属性,这是该框架的重点。

你可能没有意识到,你传递给页面的模型(让我们称之为&#34;查看模型&#34;)并不一定要与您存储在数据库中的一个(&#34;域模型&#34;)。视图模型需要具有控制器需要从视图传递到视图的所有内容。域模型需要拥有控制器需要从数据库传递到数据库的所有内容。

虽然在琐碎的场景中(例如普通的CRUD应用程序)可能会发生同样的事情,但如果它对您不起作用,请不要犹豫,改变它们。将包含所需参数的(新)模型传递给视图。