c# - 在 C# MVC 应用程序中,是否可以从未更改的控件中的网页提交变量?

标签 c# asp.net-mvc-4

我有一个 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/

相关文章:

c# - Entity Framework 。依赖角色有多个具有不同值的主体

c# - ASP.NET MVC 5 标识中的空引用

c# - 应通过调用 Select 来简化循环 - sonar cloud error c#

c# - 创建(真实)随机迷宫的最佳逻辑

asp.net-mvc-4 - Azure 云服务在 30 小时后返回错误 500

c# - 更正 ASP.NET MVC4 中的用户输入

javascript - 使用 asp.net mvc 查看包消息在按钮单击成功时无法正常工作?

Azure 中的 ASP.NET MVC 4 和 Web API - 未找到 HTTP 资源

c# - 从函数应用加载并执行 Azure Blob 容器中的代码?

c# - 我如何制作一个浏览文件夹的按钮?