MVC 5布局页面



我有一个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的值并进行处理。

最新更新