我有一张表格。在那种形式我有一个文本区属性。我点击提交按钮我想在同一页面显示一些视图包值,而我清除表格。
在我的场景中,除了一个文本区域之外,一切都变得清晰所以那个
我使用了以下方法
模型类
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())
答案 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 = "";