簡體   English   中英

從視圖傳遞下拉列表值到控制器

[英]Pass DropDown List Value from View to Controller

我需要將從“ 視圖”下拉列表中選擇的值傳遞給控制器 ,到目前為止,我失敗了。

我應該怎么做?

以下是我的視圖代碼:

@model NurseOneStop.SC.NurseProfile

@{
ViewBag.Title = "Settings";
}

<h2>Settings</h2>


 <div class="col-lg-8 col-md-6 profile_detail">
<h3>@Model.Title @Model.FirstName</h3>
<p><span>Profession:</span> @Model.Profession</p>
<p><span>Contact No:</span> <b>@Model.PhoneNumber </b>
<p><span>Email ID:</span> <b>@Model.EmailId </b>
    <br />
    <br />
    <br />
    <br />

<div>


    <div>
        <h5>Visibility Settings for Profile</h5>

        @Html.DropDownList("Profile_Settings", new List<SelectListItem>
            {
                 new SelectListItem{ Text="Public", Value = "1" },
                 new SelectListItem{ Text="Friends Only", Value = "2" },
                 new SelectListItem{ Text="Private", Value = "3" }
        }, "Select Visibility Type")


    </div>

    <button class="profile_btn">@Html.ActionLink("Save Settings", "UpdateSettings")</a></button>

</div>
</div>

以下是我的控制器:

public ActionResult UpdateSettings()
    {
        NurseProfile objNurseProfile = new NurseProfile();
        Int64 NurseId = ApplicationSession.CurrentUser.NurseId;
        if (NurseId != 0)
        {
            //objNurseProfile = objNurseDAL.UpdateProfileVisibility(NurseId, ProfileVisibility);
        }

        return View(objNurseProfile);
    }

您可以使用剃須刀來填充這樣的下拉列表,然后通過Model(如MVC指令)將其發送。

@{
   List<SelectListItem> listItems= new List<SelectListItem>();
   listItems.Add(new SelectListItem
        {
          Text = "Public",
          Value = "1"
        });
   listItems.Add(new SelectListItem
        {
            Text = "Friends Only",
            Value = "2"
        });
   listItems.Add(new SelectListItem
        {
            Text = "Private",
            Value = "3"
        });
}

@Html.DropDownListFor(model => model.profileSettings, listItems, "Select Option")

@Html.ActionLink(
    "Save Settings",                                      // linkText
    "UpdateSettings",                                     // actionName
    "Settings",                                           // controllerName
    new {                                                 // routeValues
        SomeModel = Model
    },
    null                                                  // htmlAttributes
)

並且您應該在方法中使用模型,如下所示:

public ActionResult UpdateSettings(SomeModel model)
    {
        int setting = model.profileSettings; //your choice
        return View(objNurseProfile);
    }

並創建一個像這樣的模型:

public class SomeModel
{
    [Required]
    public int profileSettings { get; set; }
}

使用以下代碼嘗試:

[HttpGet]
    public ActionResult Settings(Int64? id, string returnUrl)
    {
        List<Keyword> objKeywordList = new List<Keyword>();
        List<SelectListItem> ProfileVisibility = new List<SelectListItem>();
        NurseProfileVisibility objNurseProfileVisibility = new NurseProfileVisibility();
        Int64 NurseId = ApplicationSession.CurrentUser.NurseId;
        objNurseProfileVisibility.NurseId = NurseId;

        SelectListItem objSelect = new SelectListItem { Text = "Profile Visibility", Value = "", Selected = true };
        objKeywordList = objKeywordDAL.GetKeywordsByType("ProfileVisibility").Results;

        var visibilityOption = (from kl in objKeywordList
                                select new SelectListItem
                                {
                                    Text = kl.KeywordText,
                                    Value = kl.KeywordValue.ToString(),
                                    Selected = false
                                }).ToList();

        if (id != 0)
        {
            Result res = objNurseDAL.GetProfileVisibilityById(NurseId);
            if (res.Status)
            {
                if(res.Results != null) {
                    objNurseProfileVisibility = res.Results;
                    if (objNurseProfileVisibility.NurseId != NurseId)
                    {
                        visibilityOption.FirstOrDefault(x => x.Value == objNurseProfileVisibility.ProfileVisibilityId.ToString()).Selected = true;
                    }
                }
            }
        }
        ViewBag.VisibilityOptions = visibilityOption;
        ViewBag.returnUrl = returnUrl;
        return View(objNurseProfileVisibility);
    }

您需要將值存儲到數據庫中,並使用列表和DAL從那里解析它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM