私はそれが多くの機会で以前に尋ねられたことを知っています、しかしこれが私に起こるとき私は少し混乱しています....
私はこのようなビューモデルを持っています:
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