开发者

TextBoxFor Helper retains previous value even when model value is empty

I have an MVC form for adding a simple entity. I am using TextBoxFor(model => model.FieldName) to create the input fields. I have a Save button and a Save and New button. The Save and New button is supposed to post back to the Save action and then return the current View with an empty model to enable the user to add another entity. However, what happens is that, even though the model is indeed empty, the input fields are being generated with the values entered for the previous entity. Hope this makes sense.

I know I 开发者_运维问答could do a redirect, but that seems like an ugly workaround, so if anyone has run into this before, I'd really appreciate some input.

Thanks.


The issue here is that your ViewData.ModelState is still populated with the values from the original post, even if the Model is null and you don't explicitly pass any values into your view.

I actually don't think redirecting to the original action is that ugly of a solution, but if you don't want to do that then clearing out the ViewData should work for you:

[HttpPost]
public ActionResult Save(TestModel model)
{            
    ViewData = null;
    return View();
}


I would suggest using

ModelState.Clear();

instead of

ViewData = null;

since I find that much more clear what you are trying to do. Although both will accomplish what you're trying to do.


I had the same issue see here:

Updating value provider prior to TryUpdateModel

However - after a post - if it is successful, you should by design be redirecting to a GET action for your next data. This is part of the PRG (post-redirect-get) pattern that is meant to be used by mvc. The helpers assume you are using this pattern and if you are displaying information after a post, there mustve been an error so they redisplay the posted values for "correcting". Try not to work around this - but refactor your code to properly work with PRG.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜