基于查询字符串参数修改MVC视图文本

时间:2014-01-29 23:07:50

标签: asp.net-mvc razor view

我有(2)MVC视图除了页面上的一些文本描述之外将是99%相同。来自查询字符串的bool调用中提供的View值会切换WhereIList<TModel>子句,该Index子句最终从View加载到页面上控制器上的方法。

我知道从TModel读取查询字符串是不好的做法,并且任意选​​择单个bool实例来读取<h5>Please update the Positive values</h5>值似乎也不正确,所以我想知道怎么做。

说我有以下文字:

视图1: <h5>Please update the Negative values</h5>
视图2: Positive

我真正想要的是1个视图,Negative?IsPositive=true文本值只根据查询字符串中的以下内容进行切换:

Index

一旦调用IList方法,该值也可用于模型,但由于模型是View,我必须查看单个实例。

顺便说一下,描述符需要在IList<TModel>中的大约3-4个位置进行更改,所以如果集中化而不是内嵌更好,那我就很好。

根据查询字符串值切换此文本的正确方法是什么,这最终会导致{{1}}中的每个实例?

1 个答案:

答案 0 :(得分:1)

最好的方法是使用包含IList<TModel>IsPositive标记的视图模型,如下所示:

public class MyViewModel
{
    public IList<TModel> MyList { get; set; }

    public bool IsPositive { get; set; }
}

您的操作方法构建模型并将其传递给视图:

public ActionResult Index(bool IsPositive)
{
    IList<TModel> myList = BuildYourList();

    MyViewModel model = new MyViewModel()
    {
        MyList = myList,
        IsPositive = IsPositive
    };

    return View(model);
}

然后在您的视图中,您只需检查IsPositive属性并显示相应的HTML:

@model Your.ViewModel.Namespace.MyViewModel

@if (Model.IsPositive)
{
    <h5>Please update the Positive values</h5>
}
else
{
    <h5>Please update the Negative values</h5>
}