2013-12-21 33 views
-1

有誰知道爲什麼會發生這種情況?從我的控制器(FirmsController)中,我只是試圖將選定的公司返回到控制器方法(EditAffiliations(字符串selectedFirm))作爲參數。選定的公司值應該來自下拉列表。但無論我做什麼,我都無法做到這一點。我是新的,我會承認這一點,但這是非常誘人的。以下是方法。jQuery dropdownlist不會返回正確的選擇

public ActionResult EditAffiliations(string selectedFirm) 
    { 
     // selectedFirm = "8"; 
     //All available firms 
     //Collection<Firm> firms = new Collection<Firm>(); 
     //Collection<FirmSelectorModel> models = new Collection<FirmSelectorModel>(); 

     var model = new FirmSelectorModel(); 
     _workContext.CurrentUser.Firms = _firmService.GetAllFirms().Where(m => m.ExternalId.Contains("F")).ToArray(); 

     if (selectedFirm==null || _workContext.CurrentFirm == null) 
     { 
      _workContext.CurrentFirm = _workContext.CurrentUser.Firms.FirstOrDefault(); 
      model.CurrentFirm = _workContext.CurrentFirm.ToModel(); 
     } 
     else 
     { 
      model.CurrentFirm = _firmService.GetFirmById(Convert.ToInt16(selectedFirm)).ToModel(); //_workContext.CurrentFirm.ToModel(); 
     } 

     model.AvailableFirms = (_firmService.GetAllFirms().Where(m => m.ExternalId.Contains("F"))).Select(x => x.ToModel()).ToList(); 

     return View(model); 
    } 

下面是我的看法:

@model FirmSelectorModel 
@using System.Globalization; 
@{ 
var gridPageSize = EngineContext.Current.Resolve<Incendo.Core.Domain.Common.AdminAreaSettings>().GridPageSize; 
} 

@T("Admin.Users.UserAffiliations") 

@if (Model.AvailableFirms.Count > 0) 
{ 
using (Ajax.BeginForm("EditAffiliations", "Firms", new AjaxOptions { OnComplete = "onFirmChangedRequestCompleted();" }, new { id = "form-firmselector", role = "form"})) 
{ 
    var firms = Model.AvailableFirms.Select(x => new SelectListItem 
    { 
     Text = String.Format("{0} - {1}", x.ExternalId, x.Name), 
     Value = x.Id.ToString(), 
     Selected = x.Id.Equals(Model.CurrentFirm.Id) 
    }); 

    @Html.DropDownList("userfirm", 
     firms, 
     new { onChange = "onFirmChanged();", @class = "form-control"}) 
} 
<script type="text/javascript"> 
    function onFirmChanged() { 
     //var singleValues = $("#userfirm").val(); 
     //$("#form-firmselector").submit(); 
     //alert(singleValues); 


    } 
    function onFirmChangedRequestCompleted() { 
     //location.reload(); 
    } 

    $("select").change(displayVals); 
    displayVals(); 
</script> 
} 

我想返回在dropdwonlist選擇的值回控制器。我應該在函數onFirmchanged()中寫什麼?如何將其發送回控制器? 我錯過了什麼?希望有人會回答之前,我失去了我受詛咒的考慮到這一點煩惱... 問候,SM

回答

0

檢查你的HTML標記:

<option value="cat">dog</option> 
<option value="dog">cat</option> 

應該是:

<option value="dog">dog</option> 
<option value="cat">cat</option> 

狗是一隻狗,一隻貓是一隻貓...

+0

嗨,是的,我很抱歉。這是真的。如果代碼在小提琴中起作用,那麼它是否在我的代碼中不起作用?我希望將在dropdwonlist中選擇的值返回給控制器。我應該在函數onFirmchanged()中寫什麼?如何將其發送回控制器? –

0

檢查這個JSFiddle

<option value="dog">dog</option> 
<option value="cat">cat</option> 
相關問題