-1

コード:

Domain ob = new Domain();

[HttpPost]
public ActionResult Create(Domain ob)
{
    try
    {
        //// TODO: Add insert logic here
        FirstTestDataContext db = new FirstTestDataContext();

        tblSample ord = new tblSample();
        ord = ob;
        db.tblSamples.InsertOnSubmit(ord);

        db.SubmitChanges();
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

ここで、このようなエラーが発生しています

タイプ 'mvcInsertLinqForms.Models.Domain' を 'mvcInsertLinqForms.tblSample' に暗黙的に変換できません

4

2 に答える 2

1

それらは同じタイプではないため、に割り当てることはできませんord。ビュー モデル ( ) をドメイン モデル ( )obにマップしようとしているようです。これは、ドメイン モデルの対応するプロパティを設定することで実行できます。obtblSample

[HttpPost]
public ActionResult Create(Domain ob)
{
    try
    {
        tblSample ord = new tblSample();
        // now map the domain model properties from the 
        // view model properties which is passed as action
        // argument:
        ord.Prop1 = ob.Prop1;
        ord.Prop2 = ob.Prop2;
        ...

        FirstTestDataContext db = new FirstTestDataContext();
        db.tblSamples.InsertOnSubmit(ord);
        db.SubmitChanges();
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

このマッピングを手動で行うことを避けるために、AutoMapperなどのツールを使用すると、ビュー モデルとドメイン モデルの間でマッピングを行ったり来たりすることができます。

于 2012-05-08T16:25:23.673 に答える
0
[HttpPost]
public ActionResult (Domain model) // or (FormCollection form), use form.get("phone")
{
//---
return View();
}
于 2012-05-08T16:20:45.693 に答える