问题描述
需要在表单提交后转到控制器之前更改用户输入。下面的解决方案更改了值,但修改后的输入显示在从 JavaScript 替换后的 HTML 输入字段上。
需要替代方法来更改模型级别的值;因此,用户无法看到提供的输入正在发生变化。
<script>
$(document).ready(function () {
$("#submitButton").click(function (event) {
var element = document.getElementById("RawHtml");
var val = document.getElementById("RawHtml").value;
document.getElementById("RawHtml").value = val.replace(/</g,'<');
});
});
</script>
@using (Html.BeginForm())
{
<div class="field">
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
</div>
<div class="field">
@Html.LabelFor(model => model.RawHtml)
@Html.EditorFor(model => model.RawHtml)
</div>
<div>
<input name="Submit" type="submit" id="submitButton" />
</div>
}
解决方法
您可以尝试以下:
如果您不希望用户知道所提供的输入已更改然后传递,则在它击中控制器 ActionResult 时更改所提供的输入。
示例:
[POST]
public ActionResult Demo(ModelName model){
string finalHtml= model.RawHtml.Replace("value to be replaced","replacement value for existing value");
//further use finalHtml to store in DB
}