2015-06-10 2 views
0

У меня есть индексный указатель с фильтром dropdownlist. Всякий раз, когда в раскрывающемся списке выбирается новый элемент, на индексной странице будут отображаться данные на основе groupid. Вот мнение оMVC dropdownlist filter onchange

@using (Html.BeginForm("index", "service")) 
{ 
    <div class="row"> 
     <div class="navbar navbar-default"> 
      <div class="navbar-header" style="margin:10px 0px 5px 5px"> 
       <div class="col-lg-12"> 
        <a id="btnSAdd" class="btn btn-info glyphicon glyphicon-plus" href="/AppName/Service/Create"> Create New </a> 
        <button type="submit" id="btnSSave" class="btn btn-info glyphicon glyphicon-floppy-save"> Save </button> 
       </div> 
      </div> 
      <div class="navbar-collapse collapse navbar-responsive-collapse" style="margin:10px 0px 5px 5px"> 
       <div class="input-group"> 
        <span class="navbar" style="font-family:'Californian FB';font-weight:bold">Select a Menu:</span> 
         @Html.DropDownList("GroupID", new SelectList(ViewBag.TopMenuList, "GroupID", "GroupName"), 
          new { @class = "btn btn-info dropdown-toggle", @style = "border-color:grainsboro", @onchange = "window.location = 'service/index?groupid=' + this.value" }) 
       </div> 
      </div> 
     </div> 
    </div> 

    <div class="row"> 
     <div id="drag" class="panel-body"> 
      <table class="table table-hover" style="width:auto" id="sTable"> 
      <colgroup> 
       <col width="30" /> 
       <col width="250" /> 
       <col width="250" /> 
       <col width="200" /> 
      </colgroup> 
      <thead> 
       <tr> 
        <th>&nbsp;</th> 
        <th>Parent Group</th> 
        <th>Service Name</th> 
        <th>Service Description</th> 
       </tr> 
      </thead> 
      <tbody> 
       @for (int i = 0; i < Model.Count; i++) 
       { 
        <tr class="orderedrow"> 
         <td class="rowhandler"> 
          <div class="drag rowdip">@Html.HiddenFor(model => model[i].ServiceID)</div> 
         </td> 
         <td>@Html.DropDownListFor(model => model[i].GroupID, new SelectList(Model[i].ParentServiceGroupList, "GroupID", "GroupName", Model[i].GroupID))</td> 
         <td>@Html.EditorFor(model => model[i].ServiceName, new { htmlAttributes = new { @style = "width:250px" } })</td> 
         <td>@Html.EditorFor(model => model[i].ServiceDescription, new { htmlAttributes = new { @style = "width:250px" } })</td> 
        </tr> 
       } 
      </tbody> 
      </table> 
     </div><!--End Div drag--> 
    </div><!--End of row--> 
} 

RouteConfig.cs

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

Проблема, которую я имею в фильтр работает только первый раз, как

http://localhost/AppName/service/index?groupid=4

. Второй раз, он, кажется, добавить свой адрес, как

http://localhost/AppName/service/услуги/индекс? GroupID = 5

Как это исправить?

Благодаря

+0

ли 'AppName' область? (и вам нужно прекратить загрязнение вашей разметки поведением и научиться использовать ненавязчивый javascript) –

+0

Привет, Стивен, AppName - это имя проекта на VS. Что вы имеете в виду, прекратив загрязнение разметки поведением? Сожалею. Я являюсь случайным веб-разработчиком, поэтому мой опыт в веб-разработке ограничен. –

+0

[Что ненавязчивое javascript] (http://en.wikipedia.org/wiki/Unobtrusive_JavaScript). Можете ли вы показать содержимое своего файла 'RouteConfig.cs' –

ответ

0

Попробуйте изменить

@onchange = "window.location = 'service/index?groupid=' + this.value" 

к этому

@onchange = "window.location = '/service/index?groupid=' + this.value" 
+0

Он пропустит диспетчер службы и предоставит мне этот http: // localhost/AppName/index? Groupid = 4. Если я попробую @onchange = "window.location = '~/service/index? Groupid =' + this.value", это даст мне этот http: // localhost/AppName/~/service/index? Groupid = 4. –

+0

Попробуйте обновленный ответ. – ekad

+0

Я попытался @ onchanged = "window.location = '/ service/index? Groupid =' + this.value", и он дал мне этот localhost/service/index? Groupid = 4. Это забрало AppName –

Смежные вопросы