0

私はコントローラークラスを持っていMovieます。そのアクション メソッドの 1 つを次のように指定します。

    public string ActionMethod(string id)
    {

        if (id == null)
        {

            return "null";
        }

        if (id == string.Empty)
        {

            return "empty";
        }

        return "neither null nor empaty";
    }

クエリ文字列ではなく、ルーティングされた URL セグメントを使用して空の文字列をアクション メソッドに渡すことはできますか?

http://localhost:21068/Movies/ActionMethod?id=それを行うことができますが、クエリ文字列を使用することに注意してください。また、アクションメソッドを変更することはできません。:-)

4

4 に答える 4

1

何を達成しようとしているのかはわかりませんが、Global.asax.cs でルートを適切に指定することでおそらく実現できます。不自然な例として、次のようにします。

routes.MapRoute(
    "", 
    "{controller}/{action}/id/{id}", 
    new { controller = "Home", action = "Index", id = "" } 
    );

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }             
    );

以下を使用できます。

http://localhost:21068/Movies/ActionMethod        - id is null
http://localhost:21068/Movies/ActionMethod/id/    - id is an empty string
http://localhost:21068/Movies/ActionMethod/id/123 - id is a nonempty string

許可したい URL とそれらをどのようにマッピングするかを述べれば、だれかがルートの設定方法を提案してくれるに違いありません。

于 2012-09-13T10:05:43.643 に答える
0

ID が空の場合、クエリ文字列を渡さないでください。お気に入り

    http://localhost:21068/Movies/ActionMethod
于 2012-09-13T09:54:02.113 に答える
0

クエリ文字列を使用できない場合、フォームの使用を検討しましたか? 私はこれをテストしていませんが、試してみてください:

@using (Html.BeginForm("ActionMethod", "YourControllerName", "GET")) {
    <input type="text" name="id">
    <input type="submit" name="submitForm" value="submitForm" />
  }

参照: http://msdn.microsoft.com/en-us/library/dd460344(v=vs.108).aspx

于 2012-09-13T10:14:21.173 に答える
-2

次のようなnull許容パラメータを渡すことができると思います:

public string ActionMethod(string? id)

次のようにクエリ文字列を渡さないでください。

http://localhost:21068/Movies/ActionMethod
于 2012-09-13T10:32:56.410 に答える