MVC4を使用してビューからコントローラーにパラメーターを戻す際に問題が発生しました。
これは私のモデルのクラスです(このコードはすべて申し訳ありませんが、最初は画像を投稿したかったのですが、初心者であるため許可されていません):
public class Form
{
public Form()
{
this.Rows = new List<Row>();
}
public List<Row> Rows { get; set; }
}
public abstract class Row
{
protected Row()
{
this.Label = string.Empty;
this.Type = string.Empty;
}
public string Label { get; set; }
public string Type { get; set; }
}
public class SimpleRow : Row
{
public SimpleRow()
{
this.Value = string.Empty;
}
public string Value { get; set; }
}
public class CheckRow : Row
{
public CheckRow()
{
this.CheckedItems = new List<CheckedItem>();
this.Id = 0;
}
public List<CheckedItem> CheckedItems { get; set; }
public int Id { get; set; }
}
public class CheckedItem
{
public CheckedItem()
{
this.Title = string.Empty;
this.Checked = false;
}
public string Title { get; set; }
public bool Checked { get; set; }
}
モデルのシリアル化である入力xmlファイルからビューを構築することができました。しかし、私の問題は、ビューの値を変更して保存ボタンを押すと、コントローラー関数で空のパラメーターが返されることです。
コントローラー:
public class FormController : Controller
{
// GET: /Form/
#region Public Methods and Operators
[Authorize]
public ActionResult Index(HttpPostedFileBase file)
{
this.ViewBag.Title = "Formulaire Collaborateur";
if (file != null && file.ContentLength > 0)
{
return this.View(SerialisationHelper.DeserializeFromStream<Form>(file.InputStream));
}
return this.View();
}
[HttpPost]
[Authorize]
public ActionResult EmailForm(Form updatedForm)
{
Form f = updatedForm; // Empty instance of Form
return this.View("Index");
}
#endregion
}
そして私の見解:
@model Form
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("EmailForm", "Form", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<fieldset>
@foreach (var row in Model.Rows)
{
@Html.Partial("Row", row)
}
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<br />
}
このビューは、モデルクラスに関連付けられている他のビューを呼び出します。
さらにコードが必要な場合は投稿します。そして、どうか、私の英語を失礼します、私はネイティブスピーカーではありません。
フローレント