【问题标题】:How to remove ViewModel Required before sending it?如何在发送之前删除 ViewModel 必需的?
【发布时间】:2019-06-03 15:10:38
【问题描述】:

我有一个带有“字段”的视图模型,这是必需的。

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);
}

在我刚刚创建视图模型的情况下,如何从视图模型中删除所需的内容?

【问题讨论】:

  • 您不能从类实例中删除属性。属性属于类型,而不是实例。

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


【解决方案1】:

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

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);
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      如果你只有一个字段,你可以使用这个

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

      或者你可以使用@using System.Web.ModelBinding;在你的课堂上

      ModelState.Remove("Code");
      

      【讨论】:

        猜你喜欢
        • 2023-03-09
        • 2021-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 1970-01-01
        • 2016-01-30
        相关资源
        最近更新 更多