如何在发送ViewView之前将其删除?

时间:2019-06-03 15:10:38

标签: c# asp.net-mvc-4 asp.net-mvc-viewmodel

我有一个带有“字段”的视图模型。

public class MyViewModel
{
    [Required(ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "Required")]
    public string Code { get; set; }
}

在我的一个控制器中,我返回了该视图模型。 但是,根据某些参数,我要删除必需的内容。

public ActionResult Create()
{
    var model = new MyViewModel();
    if(something){
        model.SomeThingToRemoveTheRequiredFromCode();
    }

    return View(model);
}

在刚创建视图模型的情况下,如何从视图模型中删除必需项?

3 个答案:

答案 0 :(得分:1)

这是一种方法。创建没有必需属性的新模型

public class MyViewModelToo
{
    public string Code { get; set; }
}

然后在这种情况下,使用该视图模型返回视图

public ActionResult Create()
{
    var model = new MyViewModel();
    if(something){
        var modelToo = new MyViewModelToo();
        return View(modelToo);
    }

    return View(model);
}

答案 1 :(得分:0)

您可以像这样从模型状态字典中删除它

if(something){
    Modelstate.Remove("Code")
}

答案 2 :(得分:0)

如果只有一个字段,则可以使用此字段

public ActionResult Create()
{
var nmodel= new MyViewModel().fieldname;
if(something){
    return View(nmodel);
}
return View(model);
}

或者您可以使用@using System.Web.ModelBinding;在你班上

ModelState.Remove("Code");