如何在MVC 4中向部分视图传递参数
如何在MVC 4中向部分视图传递参数
我有一个像这样的链接:\n
个人资料
\n当我点击它时,它会调用这个局部页面:\n
@{ switch ((string)ViewBag.Details) { case "Profile": { @Html.Partial("_Profile"); break; } } }
\n局部页面 _Profile 包含:\n
Html.Action("Action", "Controller", model.Paramter)
\n例如:\n
@Html.Action("MemberProfile", "Member", new { id=1 }) // id 会不断变化
\n我的疑问是如何将这个 \"Id\" 传递给 model.parameter 部分?\n我的控制器是:\n
public ActionResult MemberHome(string id) { ViewBag.Details = id; return View(); } public ActionResult MemberProfile(int id = 0) { MemberData md = new Member().GetMemberProfile(id); return PartialView("_ProfilePage",md); }
在MVC 4中,有一个问题是如何将参数传递给部分视图。为了解决这个问题,可以使用一个扩展方法将对象转换为ViewDataDictionary,然后在视图中使用这个方法。
首先,需要创建一个静态类,并在其中定义一个名为ToViewDataDictionary的扩展方法。该方法接受一个object类型的参数,并将其转换为ViewDataDictionary。具体实现如下:
public static ViewDataDictionary ToViewDataDictionary(this object values) { var dictionary = new ViewDataDictionary(); foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(values)) { dictionary.Add(property.Name, property.GetValue(values)); } return dictionary; }
然后,在视图中使用这个方法来传递参数给部分视图。具体用法如下:
.Partial("_MyPartial", new { Property1 = "Value1", Property2 = "Value2" }.ToViewDataDictionary())
这样做比使用new ViewDataDictionary { { "Property1", "Value1" } , { "Property2", "Value2" }}
更简洁。
在部分视图中,可以使用ViewBag
来访问动态对象的属性,而不是使用索引属性。例如:
<p>.Property1</p> <p>.Property2</p>
至于ToViewDataDictionary
这个静态方法应该放在哪里,它是一个扩展方法,只需要将它放在一个静态类中,并在视图中引用这个类即可。
在MVC 4中,有人提出了如何在部分视图中传递参数的问题。他们尝试了一种简单的方法,通过将参数作为字符串传递给部分视图,并将其设置为视图的模型。同时,他们还提到了可以使用其他数据类型,如数组、整数或更复杂的数据类型,例如IDictionary等。然而,有人遇到了一个问题,他们在部分视图中访问Model时遇到了NullReferenceException错误,提示Model为null。他们试图解决这个问题,但最终还是创建了一个简单的部分视图模型来绕过这个问题。
解决方法:
在部分视图调用的地方,将参数作为字符串传递给部分视图,并将其设置为视图的模型。
.Partial("PartialAction", "String data to pass to partial")
然后,在部分视图中绑定模型,并使用它的值。
@model string
这样,就可以在部分视图中访问模型的值了。
虽然有人遇到了一个问题,即将视图模型传递给部分视图时,部分视图期望的是一个字符串,而不是一个视图模型。为了解决这个问题,他们创建了一个简单的部分视图模型,其中包含一个文本属性,并将其传递给部分视图。
这种方法在保留ViewData和ModelState的同时,通过传递参数给部分视图,可以在部分视图中访问和使用这些数据。这对于部分视图不需要模型,但需要保留ViewData和ModelState的情况非常有用。
希望这能帮到你,这是我想要的。谢谢。
在MVC 4中,有人提出了如何在部分视图中传递参数的问题。他们尝试了一种简单的方法,通过将参数作为字符串传递给部分视图,并将其设置为视图的模型。然而,有人遇到了一个问题,即将视图模型传递给部分视图时,部分视图期望的是一个字符串,而不是一个视图模型。为了解决这个问题,他们创建了一个简单的部分视图模型,其中包含一个文本属性,并将其传递给部分视图。这种方法在保留ViewData和ModelState的同时,通过传递参数给部分视图,可以在部分视图中访问和使用这些数据。这对于部分视图不需要模型,但需要保留ViewData和ModelState的情况非常有用。