Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在返回MVC4中的控制器之前编辑值_C#_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 在返回MVC4中的控制器之前编辑值

C# 在返回MVC4中的控制器之前编辑值,c#,asp.net-mvc-4,razor,C#,Asp.net Mvc 4,Razor,我想在数据到达控制器之前修改数据 我们已经通过解决方案更改了模型绑定等,因此目前我无法修改这些选项-但是,我想知道是否有可能在输入值到达控制器之前对其进行修改: foreach中的Razor代码: 我试过这样的方法。替换。。。但不允许我这样修改它 我很欣赏什么是最佳实践,但随着时间的推移,我希望快速解决方案,并在以后更改为正确的解决方案。。。我相信每个人都会喜欢这个 控制器代码:这就是为什么-我需要去掉字段中可以接受的逗号,所以不能使用逻辑来阻止它-我想用一些东西替换它,这样我就可以保留逗号分隔

我想在数据到达控制器之前修改数据

我们已经通过解决方案更改了模型绑定等,因此目前我无法修改这些选项-但是,我想知道是否有可能在输入值到达控制器之前对其进行修改:

foreach中的Razor代码:

我试过这样的方法。替换。。。但不允许我这样修改它

我很欣赏什么是最佳实践,但随着时间的推移,我希望快速解决方案,并在以后更改为正确的解决方案。。。我相信每个人都会喜欢这个

控制器代码:这就是为什么-我需要去掉字段中可以接受的逗号,所以不能使用逻辑来阻止它-我想用一些东西替换它,这样我就可以保留逗号分隔的回发

formData的类型为FormCollection

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


任何帮助都将不胜感激。这根本不是我喜欢的领域

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

您始终可以在post方法中更改模型,但请记住,如果您希望检查任何错误或将模型发回视图,则modelstate将在后台使用

如果您按此路线在控制器中更改模型,则在返回视图之前,请查看清除modelstate中已更改的字段或清除整个modelstate,否则您将看不到所做的更改,需要重新绑定模型和modelstate:

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


你如何邮寄你的表格?如果您使用ajax,您可以在提交之前对其进行修改:@theghostofc我已尝试按说明将其替换为replace,但不允许我这样做。我已经尝试过javascript,但无法进入foreach中的字段。我没有说这不可能,但我确实不知道该怎么做。@Murali HTTPPost从我的观点到控制器在您的案例中不可能避免使用formData吗?在我看来,由于在视图上使用formData和foreach,您会遇到问题。如果可以将此方法更改为for int i=0;。。。在操作中,IList参数,您可能不需要修改不好的数据:从长远来看,是的,这在列表中很好,但出于概念验证的目的,我希望它至少尽可能地粘在一起,而不会明显断裂。
var arrayOfValues = formData["x.Value"].Split(',');
model.field1 = newval;
ModelState.Remove("field1");//forces rebind
model.field1 = newval;
ModelState.Clear();//clears modelstate fully