我有两个Html链接
<a href="@Html.ActionLink("advetisement","sample")"></a>
和
<a href="@Html.ActionLink("advetisement1","sample")"></a>
当我点击First Link时,它会转到Sample控制器并转到advetisement Methode并返回View
public ActionResult advetisement{
// here iam reciveing data to variable
return view()
}
现在它返回查看并且数据被绑定并显示Page.Now当我点击第二个链接它应该转到相同的控制器(advetisement)并返回相同的数据但视图应该是不同的,因为html样式已更改。
答案 0 :(得分:5)
您可以从同一控制器操作加载两个不同的视图:
if (model.SomeCondition == true)
{
return View("ViewName1", model);
}
return View("ViewName2", model);
然后使用视图模型存储确定要显示的视图的条件:
public class MyViewModel
{
public bool SomeCondition { get; set;}
public object Data { get; set; }
}
答案 1 :(得分:0)
我认为最简单的方法就是让两个动作有不同的名字。当然,应该将代码重复提取到单独的方法中。像这样:
public ActionResult Advertisement()
{
return AdvertisementInternal("Advertisement");
}
public ActionResult Advertisement1()
{
return AdvertisementInternal("Advertisement1");
}
private ActionResult AdvertisementInternal(string viewName)
{
// filling ViewBag with your data or creating your view model
...
return View(viewName);
}
但是如果一种适当的方式是两种视图的唯一操作,那么你应该有一个标志来区分视图。它可以添加到URL。像这样:
// on the view
@Html.ActionLink("Link1", "Advertisement", "Sample", new { Id = "View1" }, null)
@Html.ActionLink("Link2", "Advertisement", "Sample", new { Id = "View2" }, null)
// in the controller
public ActionResult Advertisement(string id)
{
if (id == "View1" || id == "View2")
{
// filling ViewBag with your data or creating your view model
...
return View(id);
}
return HttpNotFound();
}