0

現在、モデルで HttpContext を参照しています。これは良い習慣ですか?代わりに必要な情報を渡すだけでよいですか?

たとえば、私のモデル コードでは次のようになります。

public void function()
{
 string param = HttpContext.Current.Request.QueryString["param"];
 if(param == "myexpectations") { ...}
}

Should be changed to:

public void function(string param) //avoid hard reference this way??
{
 if(param == "myexpectations") { ...}
}
4

1 に答える 1

1

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();
    }
}
于 2012-07-17T22:27:52.930 に答える