开发者

Handle GUIDs in ASP.Net MVC 3

I have a bunch of tables in my database that have a column which is of type GUID. I do not want this to be a part of scaffolding when i generate my views, so i am using [ScaffoldColumn(false)]. I don't want the user to enter an actual GUID when "creating" a new entity. Is there any way to automate the process of a开发者_Go百科utomatically adding a new GUID (thru data annotations or some other way??) when a user creates a new Entity or do i have to modify the controller for every table that has a GUID so that every time a user creates a new entry i make sure i generate a new GUID before saving it?

Thanks.


This is where (IMHO) the new scaffolding features encourages bad code.

You should define separate ViewModels for your views. These contain only the fields you wish the user to change along with any view specific validation/rules.

Within your controller action, you can check whether the user input is valid (ModelState.IsValid) and if so, do some lefty-righty mapping between your ViewModel properties and those of your entity.

See ViewModel Best Practices for more details.

However, to answer your question, you can use the HiddenInput attribute on an Id field so that it is rendered as a <input type="hidden"...

With regard with setting the Id, create a base class for your entities e.g:

public abstract class BaseEntity {
    public Guid Id {get;set;}
    public BaseEntity() {
        Id = Guid.NewGuid();
    }
}

You can then inherit your entities from this class and when you call new MyEntity() the base class constructor will be invoked, thus setting the Id.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜