2012-02-04 57 views
0

我想做autodostback到dropdownlist。 我見表格:在ASP.NET MVC3中改變URL的重定向動作鏈接

@using (Html.BeginForm("Index", "Model", FormMethod.Post)) 
{ 
      @(Html.Telerik().DropDownList() 
       .Name("ddlBrands") 
       .BindTo((IEnumerable<SelectListItem>)ViewData["brands"]) 
       .ClientEvents(events => events 
            .OnChange("onDropDownListChange") 
       ) 
      ) 
      <input type="submit" value="OK" /> 

    <table style="margin:15px; margin-left:0px;"> 
     @foreach (var item in Model) { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => item.FullModel) 
       </td> 
       <td> 
        @Html.ActionLink("Edit", "Edit", new { id=item.ModelID }) | 
        @Html.ActionLink("Delete", "Delete", new { id=item.ModelID }) 
       </td> 
      </tr> 
     } 
    </table> 
} 

和javascript:

<script type="text/javascript"> 
    function onDropDownListChange(e) { 
     SimpleAjaxRequest('/Model/Index', e.value); 
    } 

    function SimpleAjaxRequest(url, requestData) { 
     return $.ajax(
     { 
      type: 'POST', 
      url: url, 
      async: true, 
      data: { ddlBrands: requestData }, 
      dataType: "json", 
      traditional: true 
     }); 
    } 
</script> 

我通過Ajax從索引視圖發送POST數據到服務器和操作數據後,我需要我的表上更新數據。我怎麼能做到這一點?我嘗試重定向調用get行動

public ActionResult Index(int? ddlBrands) 
    { 
     SetBrandItems(); 
     List<Model> m = dm.GetModelsByBrandId(ddlBrands).ToList(); 
     return View(m); 
    } 

後POST操作

[HttpPost] 
     public ActionResult Index(string ddlBrands) 
     { 
      SetBrandItems(); 
      return RedirectToAction("Index", "Model", new {ddlBrands = ddlBrands}); 
     } 

,但我的網頁不刷新和URL不會改變,數據更新不及時...... 有人能幫助我嗎?

+0

我在這裏感到困惑,你不想頁面刷新?或者你想要刷新頁面? – Rafay 2012-02-04 06:59:18

+0

即時消息想要刷新我的頁面。但如果你知道其他變種更新我的表單上的日期,請幫助 – user571874 2012-02-04 07:04:24

+0

你的GET索引方法如何看起來像 – Rafay 2012-02-04 07:16:33

回答

1

的DropDownList的change事件是阿賈克斯operaiton。我認爲你不能在服務器端重定向。但是你可以在ajax回調中添加一個rediect。

如:

function SimpleAjaxRequest(url, requestData) { 
    return $.ajax(
    { 
     type: 'POST', 
     url: url, 
     async: true, 
     data: { ddlBrands: requestData }, 
     dataType: "json", 
     traditional: true, 
     success: function() { 
      //callback redirect 
      location.href = '/Model/Index'; 
     } 
    }); 
} 

    [HttpPost] 
    public ActionResult Index(string ddlBrands) 
    { 
     SetBrandItems(); 
     return Json(null, JsonRequestBehavior.AllowGet); 
    } 
1

我想做autodostback到dropdownlist。我見表格:

執行標準的形式提交:

function onDropDownListChange(e) { 
    $("form").submit(); 
} 

並返回相同的視圖(預灌封型):

[HttpPost] 
public ActionResult Index(string ddlBrands) { 
    SetBrandItems(); 
    return View("Index", new { ddlBrands = ddlBrands }); 
} 

或做你想做的通過AJAX做到這一點?如果是這樣,使用Ajax.Form代替:

@using (Ajax.BeginForm(...)) { 
    ... 
}