Asp.net mvc 3 ASP.NET MVC-IE中未选择当前选定值

Asp.net mvc 3 ASP.NET MVC-IE中未选择当前选定值,asp.net-mvc-3,Asp.net Mvc 3,在编辑模型中项目的操作中,我有: ViewBag.PossibleSource = context.Source.ToList(); 我认为: @Html.DropDownListFor(model => model.SourceID, ((IEnumerable<btn_intranet.Areas.DayBook.Models.DayBookSource>)ViewBag.PossibleSource).Select(option => new SelectList

在编辑模型中项目的操作中,我有:

ViewBag.PossibleSource = context.Source.ToList();
我认为:

@Html.DropDownListFor(model => model.SourceID, ((IEnumerable<btn_intranet.Areas.DayBook.Models.DayBookSource>)ViewBag.PossibleSource).Select(option => new SelectListItem
       {
           Text = (option == null ? "None" : option.SourceName),
           Value = option.SourceID.ToString(),
           Selected = (Model != null) && (option.SourceID == Model.SourceID)
       }))
这会将表单加载到视图中

Ajax.begin:

@using (Ajax.BeginForm("EditItem", new { controller = "QuoteLines" }, new AjaxOptions()
    {
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "Summary"
    }, new { @class = "manual-search cf" }))
{
  ...Other Model inputs

@Html.DropDownListFor(model => model.SourceID, ((IEnumerable<btn_intranet.Areas.DayBook.Models.DayBookSource>)ViewBag.PossibleSource).Select(option => new SelectListItem
       {
           Text = (option == null ? "None" : option.SourceName),
           Value = option.SourceID.ToString(),
           Selected = (Model != null) && (option.SourceID == Model.SourceID)
       }))
      <input type="submit" class="update-items" value="Update Line" />
}
EditItem操作发布请求:

public virtual ActionResult EditItem(int id)
        {
            try
            {
                DayBookQuoteLines q = context.QuoteLines.Single(x => x.QuoteLineID == id);
                ViewBag.PossibleSource = context.Source.ToList();
                if (Request.IsAjaxRequest())
                {
                    return PartialView("_EditItem", q);
                }
                else
                {
                    return RedirectToAction("SalesDetails", new { controller = "Enquiries", id = q.EnquiryID });
                }
            }
            catch (Exception ex)
            {
                return PartialView("_Error", ex.Message);
            }
        }
[HttpPost]
        public virtual ActionResult EditItem(DayBookQuoteLines q)
        {
            try
            {

                ViewBag.PossibleSource = context.Source.ToList();

                if (ModelState.IsValid)
                {
                    context.Entry(q).State = EntityState.Modified;
                    context.SaveChanges();

                    return PartialView("_GetSummary", context.Vehicles.Where(x => x.EnquiryID == q.EnquiryID).ToList());
                }
                return PartialView("_EditItem", q);
            }
            catch (Exception ex)
            {
                return PartialView("_Error", ex.Message);
            }
        }

我已经修复了它,我将EditItem的GET请求重命名为EditItemGet,然后在我的@Ajax.ActionLink中我做了:

 @Ajax.ActionLink(item.ItemNumber, "EditItemGet", new { id = item.QuoteLineID, enquiryId = item.EnquiryID }, new AjaxOptions()
           {
               InsertionMode = InsertionMode.Replace,
               UpdateTargetId = "EditItem",
               HttpMethod = "POST"
           })

这是一个缓存问题。这就是为什么它只在IE中失败,它喜欢缓存。我之前读过,将请求设置为POST请求会阻止缓存。

可能您有一些javascript错误或其他问题?你能展示一些代码吗?我有一个Ajax表单和一个Ajax链接来展示表单。如果能看到模型、控制器和视图的缩小版本,我们就可以重现这个问题了。我做了一个编辑,如果你想看到我的get/post请求,我会发布它们。我已经为我的get和post请求包含了我的操作
 @Ajax.ActionLink(item.ItemNumber, "EditItemGet", new { id = item.QuoteLineID, enquiryId = item.EnquiryID }, new AjaxOptions()
           {
               InsertionMode = InsertionMode.Replace,
               UpdateTargetId = "EditItem",
               HttpMethod = "POST"
           })