【问题标题】:jQuery dropdownlist does not return correct selectionjQuery下拉列表不返回正确的选择
【发布时间】:2013-12-21 14:12:01
【问题描述】:

有人知道为什么会这样吗?从我的控制器(FirmsController)中,我只是试图将选定的公司作为参数返回到控制器方法(EditAffiliations(string selectedFirm))。选定的公司价值应该来自下拉列表。但无论我做什么,我似乎都无法做到这一点。我是新人,我承认这一点,但这是荒谬的。下面是方法。

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

【问题讨论】:

    标签: c# jquery asp.net-mvc html-select


    【解决方案1】:

    检查您的 HTML 标记:

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

    应该是:

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

    狗就是狗,猫就是猫……

    【讨论】:

    • 嗨,是的,我很抱歉。这是真的。如果小提琴中的代码有效,那么为什么它在我的代码中不起作用?我希望将 dropdwonlist 中选择的值返回给控制器。我应该在函数 onFirmchanged() 中写什么?如何将其发送回控制器?
    【解决方案2】:

    检查这个JSFiddle

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      相关资源
      最近更新 更多