Jam*_*ker 12 c# model-view-controller asp.net-mvc model-binding
我一直在搜索互联网,试图找到一种方法来容纳我的表单元素中的破折号,以及MVC 2,3或甚至4中ASP.NET控件的默认模型绑定行为.
作为前端开发人员,我更喜欢使用CSS中的破折号而不是camelCase或下划线.在我的标记中,我希望能够做到的是这样的:
<input type="text" name="first-name" class="required" />
<input type="text" name="last-name" class="required" />
Run Code Online (Sandbox Code Playgroud)
在控制器中,我将传入一个C#对象,如下所示:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
//etc...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法Controller通过一些正则表达式或其他行为来扩展类以适应这种情况?我讨厌我必须做这样的事情:
<input type="text" name="person.firstname" class="required" />
Run Code Online (Sandbox Code Playgroud)
甚至这个:
<input type="text" name="isPersonAttending" class="required" />
Run Code Online (Sandbox Code Playgroud)
思考?
您始终可以创建自己的模型绑定器.
这是一个实现支持向模型属性添加别名的绑定器的示例:
http://ole.michelsen.dk/blog/bind-a-model-property-to-a-different-named-query-string-field/
并通过它执行以下操作:
[ModelBinder(typeof(AliasModelBinder))]
public class Person
{
[BindAlias("first-name")]
public string FirstName { get; set; }
[BindAlias("last-name")]
public string LastName { get; set; }
//etc...
}
Run Code Online (Sandbox Code Playgroud)
编辑: 正如博客所说,这个实现基于Andras对以下SO问题的回答: Asp.Net MVC 2 - 将模型的属性绑定到不同的命名值
| 归档时间: |
|
| 查看次数: |
4334 次 |
| 最近记录: |