我知道以前在很多场合都被问过,但是当这种情况发生在我身上时我有点困惑......
我有一个这样的视图模型:
public class RAssessment
{
[HiddenInput]
public string rid { get; set; }
[HiddenInput]
public string NextPageAction { get; set; }
[HiddenInput]
public string PrevPageAction { get; set; }
[HiddenInput]
public string CodeType { get; set; }
public MultiSelectList CA { get; set; }
public MultiSelectList NonCA { get; set; }
public List<SelectListItem> AXM { get; set; }
public List<SelectListItem> IntOrders { get; set; }
public List<SelectListItem> IntLang { get; set; }
public List<SelectListItem> IntLang2 { get; set; }
//Get RAssessment details
public RAssessment(int id)
{
//get details
}
public RAssessment()
{
}
}
以及一个简单的 get 和 post 控制器操作,如下所示:
[HttpGet]
public ActionResult RAssessment(int id)
{
RAssessment ra = new RAssessment(id);
return View("RAssessment", ra);
}
[HttpPost]
public ActionResult RAssessment(RAsessment ra, FormCollection formdata)
{
if (ModelState.IsValid)
{
:
return RedirectToAction(blah);
}
return View();
}
在我的页面视图..它有页面声明:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/MasterPage/Template.Master" Inherits="System.Web.Mvc.ViewPage<xxxx.Models.RAssessment>" %>
当视图上发生提交时,它会调用 actionresult RAssessment,但由于某种原因,它给了我臭名昭著的“没有为此对象定义的无参数构造函数”。(我知道同时传递模型和表单集合听起来很奇怪,但在这种情况下我确实需要这样做)。这种情况的正常答案是“因为你没有在你的模型中为 RAssessment 创建一个构造函数”,但是正如你在我的模型中看到的那样,我已经完成了它,当我在空模型构造函数中放置一个故障时,actionresult 确实去了那里。如果我删除 actionresult 中的 RAssessment 参数,它确实可以工作,但我确实想在 actionresult 中传递模型数据,然后执行一些复杂的模型验证。谁能告诉我正确的方向?谢谢。WML