编辑值在到达MVC4中的控制器之前回发

时间:2014-04-16 09:06:56

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

我想在数据到达我的控制器之前对其进行修改。

我们已经通过解决方案修改了模型绑定器等,所以此时修改它们不是我的选择 - 我想知道是否可以在它到达控制器之前修改输入的值:

Razor代码(在foreach内):

@Html.EditorFor(x=>x.Value);

我尝试过类似.Replace(...)的内容,但不允许我这样修改。

我很欣赏最佳实践,但时间紧迫我希望快速解决方案并在以后更改正确的解决方案......我相信每个人都能欣赏到这一点!

控制器代码:(这就是为什么 - 我需要删除逗号(这在字段中是可以接受的,因此无法使用逻辑来阻止它 - 我想用某些东西替换它以便我可以保留逗号分隔的回发)

(formData的类型为FormCollection)

var arrayOfValues = formData["x.Value"].Split(',');

因此它以逗号分隔的值 - 有时这个值将是Fred Jones,1 New Street - >完全可以接受我需要的条目,但是会破坏我逗号分隔的响应。

非常感谢任何帮助。这根本不是我喜欢的领域!

1 个答案:

答案 0 :(得分:0)

如果要在它到达控制器之前进行修改,则需要使用Javascript / Jquery来捕获表单提交,然后在执行提交之前修改该值。

您可以随时更改post方法中的模型,但请记住,如果要检查任何错误或将模型发送回视图,模型状态将在引擎盖下使用。

如果您走这条路线并更改控制器中的模型,那么在返回视图之前,先查看清除模型状态中已更改的字段或清除整个模型状态,否则您将看不到更改,需要获取模型和模型状态重新绑定:

model.field1 = newval;
ModelState.Remove("field1");//forces rebind

model.field1 = newval;
ModelState.Clear();//clears modelstate fully