/ / Informacje techniczne wykorzystujące wartości rozwijane do przekazania do kontrolera - asp.net-mvc, asp.net-mvc-3

Informacje techniczne wykorzystujące wartości rozwijane do przekazania do kontrolera - asp.net-mvc, asp.net-mvc-3

Mam trudności z wykonaniem następujących czynności i jeśli ktoś może mi dać pomysł, jak mogę osiągnąć następujące cele:

Po nowym wyborze w menu rozwijanym nazywam akcję Status i przekazuję wybraną wartość w menu jako parametr.

Moim zdaniem mam listę rozwijaną w następujący sposób

@Html.DropDownList("Status", Model.DisplayStatus)

W moim kontrolerze mam

private ActionResult Status(string active = "All")
{
UserModel model = new UserModel(active);
return View("Users", model);
}

Odpowiedzi:

1 dla odpowiedzi № 1

Używałbym silnie pisanych pomocników i jquery. Lubię to:

public class MyViewModel
{
public string Status { get; set; }
public IEnumerable<SelectListItem> Statuses
{
get
{
return new[]
{
new SelectListItem { Value = "online", Text = "Online" },
new SelectListItem { Value = "offline", Text = "Offline" },
new SelectListItem { Value = "all", Text = "All" },
};
}
}
}

następnie kontroler:

public class HomeController: Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}

public ActionResult Status(string status)
{
UserModel model = new UserModel(status);
return View("Users", model);
}
}

i wreszcie widok:

@model AppName.Models.MyViewModel
@using (Html.BeginForm("Status", "Home", FormMethod.Post, new { id = "myForm" }))
{
@Html.DropDownListFor(
x => x.Status,
new SelectList(Model.Statuses, "Value", "Text"),
new { id = "status" }
)
}

oraz skrypt do dołączenia do zdarzenia zmiany i przesłania formularza:

<script type="text/javascript">
$(function() {
$("#status").change(function() {
$("myForm").trigger("submit");
});
});
</script>