Should I use a view model for just two objects?

一个人想着一个人 提交于 2019-12-11 04:22:24

问题


Lets say I have a view that accepts a Person object.

Has three properties, FirstName, LastName, Age

Now lets say I add another textbox field that's not part of the object.

I don't need the value of the textbox, its just populated with data that's for the user.

When you edit the fields and post the Person to the controller, lets assume there is a validation problem so you return the Person object back with Errors

The problem is now the additional textbox has lost it's value since its not part of the model.

So I made a ViewModel with a string property for that field and a Person property to keep all the values. Seems like there would be a better way to keep the value in the "special" textbox?


回答1:


You should be able to get that extra field from the posted fields. How do you set it first time, through the ViewBag? You should be able to set it again.

But what exactly is wrong with using a ViewModel? Sooner or later you will have 2 or 3 extra fields, or a Person and an Appointment.




回答2:


I think that's totally the right way to do it. The viewmodel is the model for the view not the model for your non-UI processing, it contains a Person and extra viewable information. It fits exactly with the concept. Your Person is presumably a (non-view) model and therefore when you have a valid post back, you get the Person to save it's data (or whatever) and the extra viewable information is irrelevant at that point, because you are no longer in a 'View/UI' part of your app. Make the view strongly typed to your viewmodel and access the Person within it

@model myViewModel

@Model.Person.FirstName
@Model.OtherViewOnlyValue

Go with the viewmodel, so much cleaner than ViewBags/Session/ViewData etc.




回答3:


There are many times that you might think that you do not need to include a UI mapping to a ViewModel but most of the time you will end up adding the mapping into the ViewModel. I believe that ViewModel should represent everything on your UI screen. Since HTTP is stateless the post form values will play an important role in populating the user interface controls.



来源:https://stackoverflow.com/questions/8716673/should-i-use-a-view-model-for-just-two-objects

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