2016-01-12 23 views
1

這是我的控制器代碼。在ASP.NET MVC 4實體框架中處理多個實例的部分視圖和模型綁定

namespace MultipleInstance.Controllers 
{ 
    public class Default1Controller : Controller 
    { 
    private MVCDemoEntities db = new MVCDemoEntities(); 

    public ActionResult Index() 
    { 
     Order ord = new Order(); 
     //ord.BillingAddress = new Address1(); 
     //ord.ShippingAddress = new Address(); 
     return View(ord); 
    } 

    public ActionResult ProcessForm(Order ord) 
    { 

     return PartialView("Index"); 

     } 


    } 
} 

這是我的索引視圖。

@using(Html.BeginForm("ProcessForm","Default1",FormMethod.Post)) 
{ 
    <h3>Basic Details</h3> 
    @Html.Partial("_BasicDetails") 
    <h3>Shipping Address</h3> 
    @Html.Partial("_Address", 
    new ViewDataDictionary() 
    { 
    TemplateInfo = new TemplateInfo() 
     { HtmlFieldPrefix = "ShippingAddress" } }) 


     <input type="submit" value="Submit" /> 
} 

這是我的兩個局部視圖_BasicDetails.cshtml和_Address.cshtml

@model MultipleInstance.Order 

<table> 
    <tr> 
     <td>@Html.LabelFor(m => m.OrderID_)</td> 
     <td>@Html.TextBoxFor(m => m.OrderID_)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.CustomerID_)</td> 
     <td>@Html.TextBoxFor(m => m.CustomerID_)</td> 
    </tr> 
</table> 

這是_Address.cshtml視圖。

@model MultipleInstance.Address 

<table> 
    <tr> 
     <td>@Html.LabelFor(m => m.Street1)</td> 
     <td>@Html.TextBoxFor(m => m.Street1)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.Street2)</td> 
     <td>@Html.TextBoxFor(m => m.Street2)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.Country)</td> 
     <td>@Html.TextBoxFor(m => m.Country)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.PostalCode)</td> 
     <td>@Html.TextBoxFor(m => m.PostalCode)</td> 
    </tr> 
</table> 

當我運行上面的代碼時出現以下錯誤。未找到部分視圖'_BasicDetails'或者沒有視圖引擎支持搜索的位置。任何人都可以幫助我在哪裏出錯?或者我需要改變我的行動方法中的任何東西?

這是我的模型類提前

public partial class Order 
    { 
     public int Id { get; set; } 
     public string OrderID_ { get; set; } 
     public string CustomerID_ { get; set; } 
     public string SelectType { get; set; } 
     public Address ShippingAddress { get; set; } 

    } 



public partial class Address 
    { 
     public int Id { get; set; } 
     public string Street1 { get; set; } 
     public string Street2 { get; set; } 
     public string Country { get; set; } 
     public string PostalCode { get; set; } 
    } 

感謝。

+0

你的部分視圖的路徑是 – simsim

+0

,你的索引視圖的路徑是什麼 – simsim

+0

〜Views \ shared \ _BasicDetails.cshtml –

回答

1

這應該工作

@Html.Partial("~Views/shared/_BasicDetails.cshtml", Model) 

,你需要將它傳遞模型[它應該在你的行動來初始化]因爲我在你看到的代碼,你在你的局部視圖消費它

+0

是的兩種方式的作品。任何人都可以告訴我如何將所有表的數據保存到分貝? –

+0

我是否需要編寫單獨的動作方法?我正在使用實體框架。請給我一些想法 –

+0

作爲一種最佳實踐,讓您將視圖控制器模型化爲任何與業務相關的編碼,例如:創建一個與您的數據庫層進行通信的業務模型,將其視爲實體框架或任何其他含義,然後調用此方法在您的控制器中使用業務模型,如:Employees.GetDetails()在顯示一個員工詳細信息的視圖中使用它,用Employees.ListAll()來獲取您擁有的員工列表... etc – simsim