0
私はオブジェクトのリストをビューに渡して、ユーザーが単一のオブジェクトのプロパティを更新できるようにします。モデルのIDは、モデルのリストを編集するときに、ASP MVCのビューからアクションに正しく渡されません。
これは取得アクションです。記事のリストをここに渡しています。
public ActionResult EditArticleList(int id)
{
ArticleList articleList = unitOfWork.ArticleListRepository.GetById(id);
IEnumerable<Article> Articles = articleList.Articles;
return View(Articles);
}
これはビューです。
@model IEnumerable<Domain.Entities.Article>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>EditArticleList</title>
</head>
<body>
@for (int i = 0; i < Model.Count(); i++)
{
using (Html.BeginForm("EditArticleList", "AdminArticleList", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.EditorFor(model => Model.ToList()[i].Title, null, "Title")
@Html.HiddenFor(model => Model.ToList()[i].Id)
<input type="submit" />
<br />
}
}
これはポストのアクションです。
public ActionResult EditArticleList(Article art)
{
}
私は1,2,3のIDを持つ3つの記事を渡しています。 しかし、どの記事を更新して投稿しても、IDは1として返されます。 タイトルが正しく返されます。
これは本当に意味がありませんあなたは私がクエリ文字列純粋なMVCソリューション?:
ビューを研究したい場合は、私を聞かせてくださいすることができます。一度に1つのフォームしか送信できないので、なぜ複数のフォームを作成しているのですか?また、あなたのモデルに関係しない 'name'属性を生成します。 –
@StephenMuecke私は、ユーザが項目のリストから1つの項目を一度に更新できるようにしています。各項目には更新ボタンがあります。だからこそ、私は各項目ごとに1つのフォームを作成しています。 –
これは間違ったアプローチであり、ひどいUIです(ユーザーが2つのテキストボックスに値を入力し、両方が保存されることを考えてサブミットボタンを押すと、ModelStateが無効な場合はビューを返すことができません) –