删除 MVC4 中父视图 asp.net 部分视图信息



我的删除视图如下所示:

@model Pdsl.Sms.Entities.Models.Common.BranchInfo
@{
ViewBag.Title = "Delete";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Delete</h2>
<h3>Are you sure you want to delete this?</h3>
<fieldset>
<legend>BranchInfo</legend>
<div class="display-label">
     @Html.DisplayNameFor(model => model.CompanyId)
</div>
<div class="display-field">
    @Html.DisplayFor(model => model.CompanyId)
</div>
<div class="display-label">
     @Html.DisplayNameFor(model => model.BranchTypeId)
</div>
<div class="display-field">
    @Html.DisplayFor(model => model.BranchTypeId)
</div>
<div class="display-label">
     @Html.DisplayNameFor(model => model.BranchName)
</div>
<div class="display-field">
    @Html.DisplayFor(model => model.BranchName)
</div>
<div class="display-label">
     @Html.DisplayNameFor(model => model.Description)
</div>
<div class="display-field">
    @Html.DisplayFor(model => model.Description)
</div>
<div class="display-label">
     @Html.DisplayNameFor(model => model.EntryDate)
</div>
<div class="display-field">
    @Html.DisplayFor(model => model.EntryDate)
</div>
<div class="display-label">
     @Html.DisplayNameFor(model => model.EntryBy)
</div>
<div class="display-field">
    @Html.DisplayFor(model => model.EntryBy)
</div>
<div>
    @Html.Partial("Delete_ContactDetailPartialView", Model.ContactDetails) 
   //partial view
</div>
</fieldset>
@using (Html.BeginForm()) {
<p>
    <input type="submit" value="Delete" /> |
    @Html.ActionLink("Back to List", "Index")
</p>
}

我在控制器中的操作如下所示:

    private long cDetailId;
    public ActionResult Delete(int id)
    {
        BranchInfo branchInfo = branchInfoService.getABrachInfo(id);
        if (branchInfo == null)
        {
            return HttpNotFound();
        }
        cDetailId = (long)branchInfo.ContactDetailId;
        branchInfo.ContactDetails = contactDetailService.getAContactDetails(cDetailId);
        return View(branchInfo);
    }
    [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
        try
        {
            branchInfoService.deleteBranchInfo(id);
            contactDetailService.deleteContactDetail(cDetailId);
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

删除确认正确显示。但是当单击删除按钮时,会出现以下错误:

Object reference not set to an instance of an object.
    Line 55:     
    Line 56:     <div>
    Line 57:         @Html.Partial("Delete_ContactDetailPartialView", Model.ContactDetails)
    Line 58:     </div>
    Line 59:

使用基架时,默认情况下它不映射子实体。在您的视图中,您需要添加分部视图,并且还需要编写代码以正确显示和保存它们。

首先,我建议在 BranchInfo 类中添加一个默认构造函数:

public class BranchInfo
{
    public BranchInfo()
    {
        BranchName = "";
        Description = "";
        EntryDate = DateTime.Now;
        EntryBy = "";
        ContactDetails = new ContactDetails();
    }
    [Key]
    public int CompanyId { get; set; }
    public int BranchTypeId { get; set; }
    public string BranchName { get; set; }
    public string Description { get; set; }
    public DateTime EntryDate { get; set; }
    public string EntryBy { get; set; }
    public ContactDetails ContactDetails {get;set;} 
}

当您创建新的 BranchInformation 时,请在控制器中传递该类的实例:

// GET: /BranchInfo/Create
public ActionResult Create()
{
    BranchInfo model = new BranchInfo();
    return View(model);
}

和你的 Create.cshtml 你可以附加一个部分视图:

<div class="editor-label">
    @Html.LabelFor(model => model.ContactDetails)
</div>
<div class="editor-field">
    @Html.Partial("Create_ContactDetailPartialView", Model.ContactDetails) 
</div>

现在,每次您保存任何 BranchInfo,它都有一个子联系人详细信息。因此,当您尝试删除时,您可以毫无困难地传递联系人详细信息。

最新更新