HttpContextモデルで参照することはお勧めできません。モデルと の間のそのような密結合は望ましくありませんHttpContext。とりわけ、モデルのテストが非常に困難になります。私は間違いなくあなたの2番目のオプションに行きます.
アクション メソッドでクエリ文字列値を取得する場合は、 を使用する必要はありませんHttpContext.Current.Request.QueryString。ASP.NET のバインド メカニズムを使用して、クエリ文字列の値をアクション メソッドのパラメーターにバインドできます。たとえば、これがあなたの URI の場合:
http://localhost/Home/TestQueryString?param=ThisIsATestValue
ルートが正しく設定されていると仮定すると、コントローラーとアクションを次のように作成でき、MVC はクエリ文字列の値"ThisIsATestValue"をパラメーターにバインドしますparam。
public class HomeController : Controller
{
public ActionResult TestQueryString(string param)
{
string fromHttpContext = HttpContext.Current.Request.QueryString["param"];
// result will be set to true
bool result = param == fromHttpContext;
return new EmptyResult();
}
}