MVC 在表单提交期间更改来自 Javascript 的输入值

问题描述

需要在表单提交后转到控制器之前更改用户输入。下面的解决方案更改了值,但修改后的输入显示在从 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,'&lt;');
     });
});
</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
}