我有一个 C# MVC 应用程序和一个 <form>
在我的 page.cshtml
文件。以那种形式我有<input type="text" ... />
元素。如果我提交此表单,我只会得到 Response.Params
中的值或 Response.Form
从我手动更改值的输入(即输入文本框然后输入内容)。
如果我使用 jQuery 更改值,$('#myInput').val('some value');
这不算作输入值的变化,我没有得到 myInput
提交表单时的值。
有什么方法可以确保提交所有输入吗?如果没有,那么是否有一个很好的解决方法,也许在我的模型被绑定(bind)之前发生的某些事件?我需要知道提交时表单中的所有输入值,无论它们是否更改。
一些附加信息:
在我的 Controller 中调用 POST 操作时,表单和其他值已正确提交并且我收到了我的模型。
真正的问题是我的模型何时被绑定(bind)。它正在创建并与所有值绑定(bind),但未提交的值除外,因为它不在 Request.Params
中。收藏。
最佳答案
我只在禁用字段时见过这种行为。因此,我通常有一个 javascript 函数来处理表单提交并在提交时重新启用它们,这样正确的值就会发送到服务器。
像这样的东西对我有用(注意:我使用的是 JQuery):
$(document).ready() {
$("#ButtonSubmit").click(SubmitForm);
}
function SubmitForm(e) {
e.preventDefault();
//ensure fields are enabled, this example does text and checkbox types
$("[type='text']").attr("disabled", false);
$("[type='checkbox']").attr("disabled", false);
//submit the form
document.forms[0].submit();
}
我不知道有什么更简单的方法可以做到这一点,如果您可以“标记”指示提交所有字段的内容,那就太好了。但我不知道这是否存在,也许其他人可以提供更好的解决方案。
编辑:看来不提交的禁用字段只是 HTML 的本质,而不是与 MVC 相关的东西。
似乎如果您将字段设为readonly
而不是disabled
,那么这些值仍会提交。但是,通过这种方法,您将失去“禁用”样式。此规则的异常(exception)是 select
控件,似乎这也不会在 readonly
下提交。 More information on this can be in this question
关于c# - 在 C# MVC 应用程序中,是否可以从未更改的控件中的网页提交变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16282209/