以post方法

时间:2017-02-20 16:25:16

标签: c# asp.net-mvc razor

我有一张表格。在那种形式我有一个文本区属性。我点击提交按钮我想在同一页面显示一些视图包值,而我清除表格。

在我的场景中,除了一个文本区域之外,一切都变得清晰所以那个

我使用了以下方法

模型类

public class SomeModel 
{
 ...

 public list<user> userlist {get; set}
}

控制器类

[HttpPost]
public ActionResult SomeAction(SomeModel model) 
{
     model.userlist = new List<user>();

     if (ModelState.IsValid)
     {
        .....

        ModelState.Clear();
        ModelState.Remove(model.SampleTextArea);
        model.SampleTextArea = ""
     }  


    return View("SomeAction", model); 
}

现在一切正常。但是没有页面刷新如果我将相同的值填入此表单并单击“提交”,

因为它说模型验证无效,所以这个功能在第二次尝试之后不能用于相同的模型值。

它的错误称为&#34;用户列表&#34; System.Int [32]变为空

如何在没有页面指示的情况下正确清除此文本区域值(RedirecToAction())

1 个答案:

答案 0 :(得分:0)

here。我使用此代码从ModelState中删除单个条目:

    /// <summary>
    /// Removes the ModelState entry for this property.
    /// </summary>
    public static void RemoveFor<M, P>(this ModelStateDictionary modelState, 
                                       Expression<Func<M, P>> property)
    {
        string key = KeyFor(property);

        modelState.Remove(key);
    }

    /// <summary>
    /// Returns the ModelState key used for this property.
    /// </summary>
    private static string KeyFor<M, P>(Expression<Func<M, P>> property)
    {
        return ExpressionHelper.GetExpressionText(property);
    }

用法:

// Remove value from both ModelState and the model
ModelState.RemoveFor((SomeModel m) => m.SampleTextArea);
model.SampleTextArea = "";