-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

您不能分配给ordob因为它们不是同一类型。您似乎正在尝试将视图模型 ( ob) 映射到您的域模型 ( tblSample)。您可以通过设置域模型的相应属性来做到这一点:

[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 回答