ASP.NET MVC 3 Model-binding and form fields

丶灬走出姿态 提交于 2019-11-30 09:18:46

You could either rename the fields in the AddComment section to something that does not collide with the properties named in the Model, or you could override the value in the view using a different overload of Html.TextBox This overload of TextBox takes a value:

value (Type: System.Object)
The value of the text input element. If this value is null, the value of the element is retrieved from the ViewDataDictionary object. If no value exists there, the value is retrieved from the ModelStateDictionary object.


UPDATE: Since you added "NewComment" as a property and resolved the property naming collision that way, all that you need to do to bind a PostComment rather than the whole view model on POST to the action, is to instruct the model binder that a prefix will be used. This is done using the BindAttribute.

public ActionResult AddComment([Bind(Prefix = "NewComment")] PostComment postComment)

Use ASP NET MVC templates so you have full control over what gets populated and it is type-safe.

So you would create an .ascx template which takes a strongly typed Comment. In your model, you leave an empty one in there.

Isn't there an overload on TextBox that takes a value? You could just pass string.Empty...

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!