我有一个MVC网站,并且我使用相同的" _Layout页面"来进行所有视图。在_layout页面中,我有一个选择控件。
我想要的是从其他页面读取控件的选定值。
您能帮我了解如何做吗?
编辑:
_Layout.cshtml
<div class="col-sm-4 col-xs-6">
<label class="col-sm-2 control-label" for="slt_Aziende">Azienda:</label>
<select id="mySharedSelectControl">
<option value="1">value 1</option>
<option value="2">value 2</option>
</select>
</div>
index.cshtlm (使用_layout.cshtml)
@model IEnumerable<MySite.Models.MyModel>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
myModelController
public class MyModelController : Controller
{
public ActionResult Index()
{
//get value from mySharedSelectControl from Layout page
var selectedValueFromLayoutPage;
//do something
return View();
}
}
基于@mairaj所说的是正确的,即您无法直接读取控制器中的控件值。
您可以做的是创建这样的JavaScript函数:
$(document).ready(function () {
$("#mySharedSelectControl").change(function () {
var dropdownValue = $(this).val();
$.ajax({
url: "@Url.Action("PutValueinSession", "MyModel")", //Action method on which you want to send this dropdown value
data: { id: dropdownValue },
success: function (e) {
window.location = window.location;
}
});
});
});
您可以创建一种方法,您可以将此值放入会话中,并在整个页面上使用,如下:
public JsonResult PutValueinSession(int id)
{
Session["DropdownControlValue"] = id;
return Json(new { Result = "" }, JsonRequestBehavior.AllowGet);
}
现在您可以在任何页面上访问此值:
public ActionResult Index()
{
//get value from mySharedSelectControl from Layout page
var selectedValueFromLayoutPage=Session["DropdownControlValue"];
//do something
return View();
}
您无法直接读取Controller
中的controls
的值,您需要将dropdown
的值发送到controller
,而不是处理所需的内容。
或者您可以直接从其他views
中的JavaScript读取dropdown
的值并进行处理。