使用 ASP.NET MVC 5 和 Razor View 引擎,有没有办法在将数据发布到服务器之前获取输入字段的值,处理它们,然后发送处理后的数据?
例如:
@using (@Html.BeginForm("ViewPage", "Home", FormMethod.Post)) {
@Html.TextBox("Field1")
@Html.Hidden("Field2");
<input type="submit" id="HiddenButton" value="Submit" style="display:none" />
<input type="button" id="VisibleButton" value="Submit" />
}
现在:
<script type="text/javascript">
document.ready(function() {
$("#VisibleButton").click(function() {
var Temp = $("#Field1").val()
@{
// C# Area
Processing the Temp, by for example calling an extension method and
assigning the new value to the Hidden Field
}
$("#HiddenButton").trigger("click")
})
})
</script>
我想这样做,因为我想在将文本发送到服务器之前对其进行加密,并且我已经在 C# 中制定了加密方法。
最佳答案
这是可能的,但处理应该使用 javascript 在客户端上进行:
$("#VisibleButton").click(function() {
var Temp = $("#Field1").val();
// process Temp here using javascript
Temp = 'some new value';
// set the processed value back to the input field
$("#Field1").val(Temp);
$("form").submit();
});
如果您出于某种原因希望在服务器上进行处理,您可以将其作为 AJAX 请求发送到 Controller 操作:
$("#VisibleButton").click(function() {
var temp = $("#Field1").val();
$.ajax({
url: '@Url.Action("SomeAction")',
data: { value: temp },
success: function(result) {
$("#Field1").val(result);
$("form").submit();
}
});
});
以及您的 Controller 操作:
public ActionResult SomeAction(string value)
{
// do your processing here
value = "some new value";
return Json(value);
}
关于c# - 在客户端处理文本输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24974018/