"옵션"목록으로 사용할 드롭 다운 목록을 내 응용 프로그램에 표시하려고합니다. 사용자는 다른 곳에서 적용 할 수있는 옵션을 선택할 수 있습니다. 이 데이터는 사용자가 페이지에 머물러있는 한 지속됩니다. 이 객체가이 방법을 사용옵션으로 제공되는 드롭 다운 목록에서 선택한 값을 가져 와서 유지하십시오.
public class ResultsOptions
{
public string mStartOption { get; set; }
public List<SelectListItem> mListOptions { get; set; }
public ResultsOptions()
{
mListOptions = new List<SelectListItem>();
}
}
:
[HttpGet]
public ActionResult SetResults(string _submitButton, string _option)
{
mOptions.mListOptions = new List<SelectListItem>();
foreach (var option in mListOptions)
{
if (!String.IsNullOrWhiteSpace(mResultOption))
{
if (option == mResultOption)
{
SelectListItem item = new SelectListItem
{
Selected = true,
Text = option,
Value = option
};
mOptions.mStartOption = option;
mOptions.mListOptions.Add(item);
}
else
{
SelectListItem item = new SelectListItem
{
Text = option,
Value = option
};
mOptions.mListOptions.Add(item);
}
}
else
{
mOptions.mStartOption = "";
SelectListItem item = new SelectListItem
{
Text = option,
Value = option
};
mOptions.mListOptions.Add(item);
}
}
return PartialView(mOptions);
}
[HttpPost]
public JsonResult SetResults(ResultsOptions _options)
{
if (!String.IsNullOrWhiteSpace(_options.mStartOption))
{
mResultOption = _options.mStartOption;
mOptions.mStartOption = _options.mStartOption;
var selected = mOptions.mListOptions.First(_x => _x.Value == _options.mStartOption);
selected.Selected = true;
}
return Json(new { Message = "Option saved" });
}
mListOptions
이 Standard
및 Simple
가 포함 된 문자열의 정적 목록입니다
는 여기에 드롭 다운리스트입니다. 당신이 짐작다시피, 나는 이런 식으로 내 레이아웃에 렌더링 부분보기하고 있어요 : 마침내 여기
<div>
<div class="float-left">
@Html.ActionLink("Advanced Search", "AdvancedSearch", "Store")
@Html.ActionLink("Browse Promo Packs", "PackSearch", "Store")
</div>
<div class="float-right">
@{
Html.RenderAction("SetResults", "Store");
}
</div>
<div class="clear"></div>
</div>
을 그리고 것은 부분보기입니다 : 그래서
@model MyApp.ViewModels.ResultsOptions
<script type="text/javascript">
$.post("/Store/SetResults/", $('#options').serialize(),
function(data) {
$('#divMessage').html(data.Message);
});
</script>
@using (Html.BeginForm(null, null, FormMethod.Post, new { @id = "options"}))
{
@Html.DropDownListFor(_model => _model.mStartOption, Model.mListOptions, new { @class = "nullify" })
<input type="submit" name="_submitButton" value="Set"/>
<div id="divMessage">
</div>
}
, 기본적으로 나는 것을 원하는 드롭 다운 목록은 항상 선택 목록으로 표시됩니다. 선택한 값은 나중에 사용되며 디스플레이에 거의 영향을 미치지 않습니다.
그러나 "설정"버튼을 클릭 할 때 내보기가 인 경우에만 부분보기가 렌더링되고 나머지는 비워집니다. 내가하고 싶은게 아니야. 누구든지 나를 도울 수 있습니까?
편집
내가 제안 몇 가지 JSON 결과에 노력하고있다,하지만 같은 문제가 : 얻은 결과 메시지가 나중에 표시 가져옵니다 만 것입니다.
당신이 설정 버튼을 클릭 한 후 발생할까요? – WannaCSharp
그럼 선택한 옵션 만 유지하고 싶습니다. 아무것도 바뀌지 않습니다. 나중에 다른 뷰/액션에서이 변수 ('mResultOption')를 참조하여 사용자가 선택한 옵션을 확인합니다. – hsim