0

我想在没有提交按钮的表单中提交数据,而不是一个具有单击事件的简单 div,并且所有这些数据都应该由控制器的操作作为强类型视图模型接收。例如我有以下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>
@PageResources.btnSearch
<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }

控制器的动作也看起来像这样

    [HttpPost]
    public ActionResult DoAction(TestViewModel model)
    {

        return Json(model, JsonRequestBehavior.AllowGet);
    }

和视图模型

  public class TestViewModel
{
    public string Texting;
    public string Car;
    public bool IsChecked;
}

当调用动作时,问题是模型没有值,即使我在控件中输入了一些东西出了什么问题?为什么 mvc 不将我的数据解释为视图模型?

4

1 回答 1

0

在你的 Jquery Doaction() 函数中。按如下方式准备视图模型。

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

或者

 var model={
             Texting:$('input[name="Texting"]').val();
             Car:$('select[name="Car"] option:selected').val(),
             IsChecked:$('input[name="IsChecked"]').is(':checked');
    }

然后使用

 JSON.stringify(model)

希望对您有所帮助。如果不理解,请发表评论

于 2013-08-14T11:08:12.283 回答