我想在数据到达我的控制器之前对其进行修改。
我们已经通过解决方案修改了模型绑定器等,所以此时修改它们不是我的选择 - 我想知道是否可以在它到达控制器之前修改输入的值:
Razor代码(在foreach
内):
@Html.EditorFor(x=>x.Value);
我尝试过类似.Replace(...)
的内容,但不允许我这样修改。
我很欣赏最佳实践,但时间紧迫我希望快速解决方案并在以后更改正确的解决方案......我相信每个人都能欣赏到这一点!
控制器代码:(这就是为什么 - 我需要删除逗号(这在字段中是可以接受的,因此无法使用逻辑来阻止它 - 我想用某些东西替换它以便我可以保留逗号分隔的回发)
(formData的类型为FormCollection)
var arrayOfValues = formData["x.Value"].Split(',');
因此它以逗号分隔的值 - 有时这个值将是Fred Jones,1 New Street - >完全可以接受我需要的条目,但是会破坏我逗号分隔的响应。
非常感谢任何帮助。这根本不是我喜欢的领域!
答案 0 :(得分:0)
如果要在它到达控制器之前进行修改,则需要使用Javascript / Jquery来捕获表单提交,然后在执行提交之前修改该值。
您可以随时更改post方法中的模型,但请记住,如果要检查任何错误或将模型发送回视图,模型状态将在引擎盖下使用。
如果您走这条路线并更改控制器中的模型,那么在返回视图之前,先查看清除模型状态中已更改的字段或清除整个模型状态,否则您将看不到更改,需要获取模型和模型状态重新绑定:
model.field1 = newval;
ModelState.Remove("field1");//forces rebind
或
model.field1 = newval;
ModelState.Clear();//clears modelstate fully