2013-02-23 72 views
1

我一直在试图获得在asp.net mvc4中工作的级联下拉菜单....现在我开始使用ajax.beginform ...后来我可能会去直接jquery .. ..mvc ajax.beginform不能与partialview

我的问题是,调用第一个(轨道)ajax.beginform,它调用控制器,然后这指向第二个部分(铁路)...但是,当SelectRailPartial.cshtml服务器它这样做全视图...它不是与div标签作为替代品...我已经尝试了各种值在ajaxControls中指定替换,等等...他们似乎没有什么不同...

我怀疑我的问题可能在JavaScript我包括....我有条纹编辑一切回到一些我知道我需要保持简单....任何人都可以发现我做错了什么?请....

在我的(移动)控制器我有以下两种方法:

//this is my main form that I am looking at... 
    public ActionResult LoadRailVehicle() 
    { 
     LoadRailVehicleInputModel model = new LoadRailVehicleInputModel(); 
     IRailService railService = new RailService(); 
     model.TrackList = railService.GetActiveRailTracks().ToList(); 
     return View(model); 
    } 


    [HttpPost] 
    public ActionResult SelectTrack(string selectedTrack) 
    { 
     LoadRailVehicleInputModel model = new LoadRailVehicleInputModel(); 
     //kludge for now... 
     model.RailCarList.Add("aaaa");   
     return PartialView("xSelectRailPartial", model); 
    } 

我LoadRailVehicle.cshtml

@using TBS.Etracs.Web.Main.Areas.Carrier.Models 
@model LoadRailVehicleInputModel 

@{ 
    ViewBag.Title = "Load Rail Vehicle"; 
} 

<scripts> 
     <script src="@Url.Content("~/Scripts/jquery-1.9.1.js")"     type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery-1.9.1.min.js")"    type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery-1.9.1.intellisense.js")"  type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery-1.10.1.min.js")"    type="text/javascript"></script> 
     <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> 
</scripts> 

<table border="0"> 
    <tr> 
     <td>Track</td> 
     <td> : </td> 
     <td><div id="trackdiv">@Html.Partial("xSelectTrackPartial", Model)</div></td> 
    </tr> 
    <tr> 
     <td>Rail</td> 
     <td> : </td> 
     <td><div id="Raildiv">@Html.Partial("xSelectRailPartial", Model)</div></td> 
    </tr> 
</table> 

在xSelectTrackPartial.cshtml:

@using TBS.Etracs.Web.Main.Areas.Carrier.Models 
@model LoadRailVehicleInputModel 

<scripts> 
    <script src="@Url.Content("~/Scripts/jquery-1.10.1.min.js")"    type="text/javascript"></script> 
    <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> 
</scripts> 

@using (Ajax.BeginForm("SelectTrack", "Mobile", 
        new AjaxOptions 
        { UpdateTargetId = "Raildiv" 
           @* This is a control in theLoadRailVehicle.cshtml *@ 
         })) 
{ 
    @Html.DropDownListFor(p => p.SelectedTrack, 
          new SelectList(Model.TrackList),   
          new { id  = "trackdropdown", 
           name  = "trackdropdown", 
           Class = "dropdownstyle", 
           style = "width: 100px" , 
           onchange = "this.form.submit();"}) 
} 

在xSelectRailPartial.cshtml

@using TBS.Etracs.Web.Main.Areas.Carrier.Models 
@model LoadRailVehicleInputModel 

<scripts> 
    <script src="@Url.Content("~/Scripts/jquery-1.10.1.min.js")"    type="text/javascript"></script> 
    <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> 
</scripts> 

@if (Model.RailCarList != null && Model.RailCarList.Count() > 0) 
{ 
    @Html.DropDownListFor(p => p.SelectedRailCar, 
          new SelectList(Model.RailCarList),   
          new { id  = "raildropdown", 
            name  = "raildropdown", 
            Class = "dropdownstyle", 
            style = "width: 100px" }) 
} 

这里是我_layout.cshtml这我通过_viewstart

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>@ViewBag.Title - Etracs</title> 
     <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
     <meta name="viewport" content="width=device-width" /> 
     @* @Styles.Render("~/Content/css")  *@ 
     @* @Scripts.Render("~/bundles/modernizr") *@ 
     @* @Scripts.Render("~/bundles/jquery") *@ 
     <script src="@Url.Content("~/Scripts/jquery-1.9.1.js")"     type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery-1.9.1.min.js")"    type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery-1.9.1.intellisense.js")"  type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery-1.10.1.min.js")"    type="text/javascript"></script> 
     <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> 
     @RenderSection("scripts", required: false) 
    </head> 
    <body> 

     <header> 
      <div class="content-wrapper"> 
       <div class="float-right"> 
        <section id="login"> 
         @Html.Partial("_LoginPartial") 
        </section> 
       </div> 
      </div>  
     </header> 

     <div id="body">   
      <section class="content-wrapper main-content clear-fix"> 
       @RenderBody() 
      </section> 
     </div> 


     @Html.Partial("_ViewSwitcher") 
     <footer> 
      <div class="content-wrapper"> 
       <div class="float-left"> 
        <p>&copy; @DateTime.Now.Year - Turning Basin Services</p> 
       </div> 
      </div> 
     </footer> 

    </body> 
</html> 
+0

我决定切换到直Jquery自从我读了,你不能有一个html.beginform(我最终需要)内的ajax.beginform .... – user2040849 2013-02-25 20:17:49

+0

经过很多小问题,我得到了jquery工作.....对于那些来在我之后,阅读了这个没有想到的问题之一就是需要JsonResult调用的JsonRequestBehavior ... – user2040849 2013-02-25 20:20:05

+0

即。 public JsonResult GetRailCars(string selectedTrack) { IRailCarService railCarService = new RailCarService(); LoadRailVehicleInputModel model = new LoadRailVehicleInputModel(); 列表 railCarList =新列表(); if(selectedTrack!= null && selectedTrack!= string.Empty) { // railCarList.Add(“aaaa”); railCarList.Add(“bbbb”); } return Json(railCarList,JsonRequestBehavior.AllowGet); } – user2040849 2013-02-25 20:20:48

回答

0

越来越见的评论....我切换到直jquery,并有很多与此问题(这就是为什么我首先尝试ajax.beginform).....但一段时间后,我消除了jquery中的所有问题,现在的调用工作....与我可以嵌入的额外好处S上的html.beginform内新代码

我始终没弄清楚的问题是,导致它不是局部屏幕内创建ajax.beginform什么...