ASP.NET MVC 4 と MongoDB を使用して、基本的な映画データベースを作成しようとしています。私の問題は、私の MovieController の POST Update メソッドにあります。
[HttpPost]
public ActionResult Update(Movie movie)
{
if (ModelState.IsValid)
{
_movies.Edit(movie);
return RedirectToAction("Index");
}
return View();
}
ModelState には、ムービーの Id フィールド (ObjectId オブジェクト) のエラーが含まれており、次の例外がスローされます。
{System.InvalidOperationException: The parameter conversion from type 'System.String' to type 'MongoDB.Bson.ObjectId' failed because no type converter can convert between these types
これは更新ビューです。
@model MVCMovie.Models.Movie
@{
ViewBag.Title = "Update";
}
<h2>Update</h2>
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.Id);
@Html.EditorForModel()
<p>
<input type="submit" value="Update" />
</p>
}
モデルの Movie クラス:
namespace MVCMovie.Models
{
public class Movie
{
[BsonId]
public ObjectId Id { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
[ScaffoldColumn(false)]
public DateTime TimeAdded { get; set; }
}
}
編集: ソリューション [ScaffoldColumn(false)] を Id に追加して、ブラウザがレンダリングを試行しないようにしました。ただし、正しい ID を渡すには、Mihai が提供するソリューションを実装する必要がありました。
ObjectId オブジェクトの代わりに文字列を送信しようとするため、ビューで問題が発生していると想定しています。しかし、これを修正する方法がわかりません。何かアイデアはありますか?