基于模型验证视图模型

时间:2014-01-09 05:00:53

标签: asp.net-mvc

所以到处都发现使用视图模型更好。它说它会阻止我使用'spegetti代码',好吧我喜欢它。

我不认为对每个视图模型重复我的验证是个好主意,所以我找到了automapper,我正在尝试这个,但它不起作用我做错了什么?

感谢

    [HttpPost]
    public ActionResult AddProvider(ProviderNewVM providerVM)
    {
        Provider provider = Mapper.Map<Provider>(providerVM);
        UpdateModel(provider);
        if (ModelState.IsValid)
        {
            return Content("ok");    
        }
        return Content("nope");
    }

我的模特:

public class Provider
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
    public string Phone  { get; set; }
    public string Email { get; set; }
}

我的视图模型:

public class ProviderNewVM
{
    public string Name { get; set; }
    public string Phone { get; set; }
    public string Email { get; set; }
}

我正在尝试从我的视图中恢复ProviderNewVM类,并将我的控制器中的模型转换为Provider类,以便我可以使用模型验证进行验证。

Sory,我收到错误(“Controli_web.Models.Provider”类型的模型无法更新)

UpdateModel(provider);

然后我将该行更改为:

TryUpdateModel(provider);

并且模型始终有效

1 个答案:

答案 0 :(得分:0)

在AddProvider操作中尝试此操作:

[HttpPost]
public ActionResult AddProvider(ProviderNewVM providerVM)
{
    Mapper.CreateMap<ProviderNewVM , Provider>();
    Provider provider = Mapper.Map<ProviderNewVM,Provider>(providerVM);
    UpdateModel(provider);
    if (ModelState.IsValid)
    {
        return Content("ok");    
    }
    return Content("nope");
}