ASP.NET MVC表单没有帮助器

时间:2014-06-10 18:21:32

标签: asp.net-mvc jquery-mobile

我想在我的asp.net MVC网站上创建一个表单,而不使用像@ Html.EditorFor()这样的HTML帮助...

我也想使用Jquery Mobile。

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset data-role="controlgroup" data-iconpos="right">
        <legend>Languages :</legend>
        <input type="checkbox" name="checkbox-h-6a" id="checkbox-h-6a">
        <label for="checkbox-h-6a"></label>
        <input type="checkbox" name="checkbox-h-6b" id="checkbox-h-6b">
        <label for="checkbox-h-6b">French</label>
        <input type="checkbox" name="checkbox-h-6c" id="checkbox-h-6c">
        <label for="checkbox-h-6c">German</label>
</fieldset>
}

我想将它与我的模型一起使用。 (例如“bool UseEnglish”,“bool UseFrench”,..)

我怎么能这么做?

1 个答案:

答案 0 :(得分:2)

帮助者真正做的唯一事情就是抽象出表单字段的name属性。如果您不想使用帮助程序,则必须确保将name属性设置为正确的内容,以便它们在POST后与您的模型匹配。

对于简单属性,名称只是属性名称,因此给出:

public string Foo { get; set; }

您的输入如下:

<input type="text" name="Foo">

对于复杂类型或参考导航属性之类的东西,您只需将属性名称链接在一起,直到您达到所需级别,因此给出:

public Foo Foo { get; set; }

public class Foo
{
    public string Bar { get; set; }
}

你最终会:

<input type="text" name="Foo.Bar">

最后,对于列表样式属性,您只需添加一个索引,因此给出:

public List<string> Foos { get; set; }

然后:

<input type="text" name="Foos[0]">
<input type="text" name="Foos[1]">
<input type="text" name="Foos[2]">

当然,你可以把所有这些原则放在一起来模拟任何关系:

public List<Foo> Foos { get; set; }

然后:

<input type="text" name="Foos[0].Bar">