У меня есть такая ссылка:
<a href='Member/MemberHome/Profile/Id'><span>Profile</span></a>
и когда я нажму на это, он вызовет эту частичную страницу:
@{
switch ((string)ViewBag.Details)
{
case "Profile":
{
@Html.Partial("_Profile"); break;
}
}
}
Частичная страница _Profile содержит:
Html.Action("Action", "Controller", model.Paramter)
Пример:
@Html.Action("MemberProfile", "Member", new { id=1 }) // id is always changing
Я сомневаюсь, что как я могу передать этот "Id" в часть model.parameter ?
Мои контроллеры:
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);
}
Ответы:
Ваш вопрос трудно понять, но если я получаю суть, у вас просто есть некоторая ценность в вашем главном представлении, к которой вы хотите получить доступ в частичном отображении в этом представлении.
Если вы просто визуализируете частичное с только частичным именем:
Фактически она будет передавать вашу модель как неявный параметр, так же, как если бы вы вызывали:
Теперь, чтобы ваше частичное действительно могло использовать это, оно также должно иметь определенную модель, например:
В качестве альтернативы, если вы имеете дело со значением, которого нет в модели вашего представления (оно находится в ViewBag или как-то сгенерированное в самом представлении значение, тогда вы можете передать
ViewDataDictionary
А потом:
Как и в модели, Razor неявно передает ваше частичное представление
ViewData
по умолчанию, поэтому, если у вас было этоViewBag.Id
представление, вы можете ссылаться на ту же вещь в своем частичном.источник
@Html.Partial("_SomePartial", new Microsoft.AspNet.Mvc.ViewFeatures.ViewDataDictionary(this.ViewData) { { "id", someInteger } });
это, чтобы работать на меня. Я использую VS2015 DNX 4.5.1, если у кого-то еще есть такая же проблема.Один из самых коротких методов, который я нашел для одного значения, пока искал себя, - это просто передать одну строку и установить строку в качестве модели в представлении, как это.
В вашей Частично вызывающей стороне
А затем связать модель с частичным видом, как это
и использование его значения в частичном представлении, как это
Вы также можете играть с другими типами данных, такими как массив, int или более сложные типы данных, такие как IDictionary или что-то еще.
Надеюсь, поможет,
источник
NullReferenceException
, ссылка на объект не установлена на экземпляр объекта, это говорит о том, чтоModel
является нулевым. Любые идеи?Вот метод расширения, который преобразует объект в ViewDataDictionary.
Затем вы можете использовать его в своем представлении следующим образом:
Что намного приятнее
new ViewDataDictionary { { "Property1", "Value1" } , { "Property2", "Value2" }}
синтаксиса.Затем в частичном представлении вы можете использовать
ViewBag
для доступа к свойствам динамический объект, а не индексированные свойства, напримеристочник
ToViewDataDictionary
статический метод? Везде, где я пытаюсь это выразить, я получаю какую-то ошибку компилятора.Для ядра Asp.Net лучше использовать
Так например
источник