2012-03-23 30 views
0

尝试编辑时出现问题。我与区域合作,以更好地管理应用程序。问题出现在称为“管理员”的区域。编辑模型时不方便

接下来是控制器代码(OfficeControlle),我使用了一个以前创建过的会话变量,并且可以编辑我得到的模型数据。

public ActionResult Edit() 
     { 
      decimal id; 
      id = (decimal)Session["consul"]; 
      CAMPUS_UNIVERSITY campus_university = db. CAMPUS_UNIVERSITY.Single(s => s.Idoffice == id); 
      ViewData.Model = db.OFFICE.Single(c => c.Idoffice == id); 
      ViewBag.University = db.UNIVERSITY.Single(u => u.IdUniversity == campus_university.IdUniversity); 
      ViewBag.campus = db.CITY_CAMPUS.Single(u => u.IdCity == campus_university.Idcitycampus); 
      return View(sede_universidad); 
     } 

     [HttpPost] 
     public ActionResult Edit(CAMPUS_UNIVERSITY campus_university, OFFICE office) 
     { 
      if (ModelState.IsValid) 
      { 
       db.CAMPUS_UNIVERSITY.Attach(campus_university); 
       db.ObjectStateManager.ChangeObjectState(campus_university, EntityState.Modified); 
       db.SaveChanges(); 

       db. OFFICE.Attach(office); 
       db.ObjectStateManager.ChangeObjectState(office, EntityState.Modified); 
       db.SaveChanges(); 

       return RedirectToAction("Index"); 
      } 
      ViewBag.IdCitycampus = new SelectList(db.CITY_CAMPUS, "IdCity", "Name", campus_university.IdCitycampus); 
      ViewBag.IdConsultorio = new SelectList(db.OFFICE, "Idoffice", "addressoffice", campus_university.Idoffice); 
      ViewBag.IdUniversidad = new SelectList(db.UNIVERSITY, "IdUniversity", "Name", campus_university.IdUniversity); 
      return View(campus_university); 
     } 

接下来是视图代码

@model RolMVC3.Models.CAMPUS_UNIVERSITY 

@{ 
    ViewBag.Title = "Edit"; 
} 

<h2>edit</h2> 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 

    <h2> @ViewBag.University.Name - @ViewBag.Campus.Name </h2> 

    <fieldset> 
     <legend>OFFICE</legend> 

     @Html.HiddenFor(model => model.IdUniversity) 

     @Html.HiddenFor(model => model.IdCitycampus) 

     @Html.HiddenFor(model => model.Idoffice) 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.addresscampus) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.addresscampus) 
      @Html.ValidationMessageFor(model => model.addresscampus) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.phonecampus) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.phonecampus) 
      @Html.ValidationMessageFor(model => model.phonecampus) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.emailcampus) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.emailcampus) 
      @Html.ValidationMessageFor(model => model.emailcampus) 
     </div> 

     <fieldset> 
     <legend>OTHER DATE</legend> 
     @Html.Partial("_office", Model.OFFICE) 
     </fieldset> 

     <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("back", "Index") 
</div> 

的问题出现时,我按下“保存”按钮,出现以下错误:

参数字典包含空条目参数“ ‘中‘’RolMVC3.Areas.Administrator.Controllers.OfficeController‘’

+0

它抱怨指数操作方法。不知道如果你告诉我索引方法会有帮助吗?你可以调试,看看它是否炸弹在这里:id ='(十进制)会话[“consul”];' – 2012-03-23 05:21:17

+0

只是另一个指针,首先检查空值,如果字符串是空的其他明智,它会在演员阵容时炸弹。 – 2012-03-23 05:29:40

+0

向我们展示“索引”操作,因为根据您的异常导致问题。 – nemesv 2012-03-23 06:13:11

回答

2

’的方法‘‘System.Decimal“’System.Web.Mvc.ActionResult指数(System.Decimal)”的非空类型’身份证当你重定向这里:

return RedirectToAction("Index"); 

确保您通过ID查询字符串,因为它看起来像你的索引操作需要它作为参数:

return RedirectToAction("Index", new { id = campus_university.IdUniversity }); 
0

我假设你的指数操作方法如下所示(请纠正我,如果我错了):

public ActionResult Index(decimal id) 
{ 
    // Your method's code 
} 

那么,你做return RedirectToAction("Index");您要重定向到不带任何的操作方法参数。但在这种情况下,有一个需要参数的操作方法,即id。因此,重定向时,您需要更改代码并提供此id parameter

这是你可以做什么:

return RedirectToAction("Index", new { id = /* put your id here */ });