Asp.net mvc 3 将表单数据作为类型化viewmodel提交到操作

Asp.net mvc 3 将表单数据作为类型化viewmodel提交到操作,asp.net-mvc-3,http-post,Asp.net Mvc 3,Http Post,我希望在表单中提交数据,而不使用提交按钮,而使用具有单击事件的简单div,所有这些数据都应该作为强类型视图模型由控制器的操作接收。 <script type="text/javascript"> function doAction() { $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) { }); } 例如,我有以下html <form method="POS

我希望在表单中提交数据,而不使用提交按钮,而使用具有单击事件的简单div,所有这些数据都应该作为强类型视图模型由控制器的操作接收。
<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }
例如,我有以下html

<form method="POST"  id="frm" name="frm">
<input type="text" name="Texting"/>
<select name="Car">
 <option value="volvo">Volvo</option>
 <option value="saab">Saab</option>
 <option value="opel">Opel</option>
 <option value="audi">Audi</option>
 </select> 
<input type="checkbox" name="IsChecked" checked="checked"/>

</form>
<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }
以及视图模型

<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }
  public class TestViewModel
{
    public string Texting;
    public string Car;
    public bool IsChecked;
}
调用该操作时,问题是即使我在控件中输入了一些内容,模型也没有值
<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }
怎么了?为什么mvc不将我的数据解释为viewmodel?

在Jquery Doaction()函数中。按如下所示准备viewmodel

<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }
var model={
         Texting:$('#IdForInputText').val(),
         Car:$('#IDforSelectList').val(),
         IsChecked:$('#IDForCheckBox').is(':checked'),
}

然后使用

<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }
 JSON.stringify(model)

希望有帮助。如果不理解请留下评论

问题是我不知道控件的ID,它们是由字段名+Guid生成的,这是我的团队领导的决定。因此,我不能在那里放一些类似短信的东西:$(“#Texting_12df3_23232_ert56_3434343”),val()看起来不太好。相反,我仍然有一个表单,它封装了一堆EditorFor(model.Texting),等等,所以我需要一些方法来将表单解释为ViewModel,当它传递给控制器的Action时,有很多方法可以通过jquery检索html元素,不仅仅是通过id查看更新的答案从我看到的,唯一的解决方案是从客户端创建模型?亲爱的,可能还有其他方法,但我已经告诉过你我觉得更容易和更适合客户端的方法?但是guid的理念是拥有唯一的id。通过使用输入[name=“IsChecked”]我可以选择多个控件并将其放入单个变量中,这不好。我需要将该表单作为一个整体,并在服务器上解析它,作为特定的ViewModel。我如何才能做到这一点?
<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }