由于参数不同导致发布困难

时间:2011-02-02 11:11:02

标签: asp.net-mvc asp.net-mvc-3

在我的控制器中,我有以下代码

public ActionResult Tests(int clientID, string clientName)
    {
        TestModel model = new TestModel (clientID, clientName);
        return View(model);
    }

    [HttpPost]
    public ActionResult Tests(TestModel model)
    {
        try
        {
            model.Save(model);
            return GetClientView();
        }
        catch (Exception e)
        {
            ModelState.AddModelError("Error", e.Message);
            return RedirectToAction("Tests");
        }
    }

我的MyPage.cshtml中有

 @using (Html.BeginForm())
{
<h2> @Model.ClientName</h2>

...
<p> <input type ="submit"  value="Save" id="submit" />
     </p>
}

但是,点击提交按钮后,我收到错误信息

  

没有为此对象定义无参数构造函数。

     

异常详细信息:   System.MissingMethodException:没有   为...定义的无参数构造函数   这个对象。

页面来源显示以下内容

<form action="/Client/Tests?clientID=891&amp;clientName=Another%20Client" method="post">

我做错了什么?

3 个答案:

答案 0 :(得分:3)

尝试在TestModel

中创建无参数构造函数
public class TestModel
{
    public TestModel()
    {
    }
}

这应该可以做到!

答案 1 :(得分:0)

尝试使用:

using (Html.BeginForm("Tests", "YourController")
    {
        <div id="create-event">
            <div>
                @Html.LabelFor(model => model.ClientId)
                @Html.TextBoxFor(model => model.ClientId)
            </div>
            <div>
                @Html.LabelFor(model => model.ClientName)
                @Html.TextBoxFor(model => model.ClientName)
            </div>                             

            <input type="submit" value="Ok" />
        </div>
    }

答案 2 :(得分:0)

在保存之前,您似乎没有插入或更新模型。

使用实体框架

更新

Try
{
         TryUpdateModel(model);
         model.Save(model);
         return GetClientView();
} 

插入:

Try
{
        AddToTable(model); // Table being your Entity Model's entity type name
        model.Save(model);
        return GetClientView();
}