2

基本的に、私の列挙値はあなたのページ (URL 内) を決定します。ユーザーが URL に大量のテキストを入力すると、デフォルトで "New" になります..... .put Enum 値以外の数値を入力すると、デフォルトの「新規」ページの代わりにその数値が表示されます。

大量のコードを投稿したくないので、明確であることを願っています.URLにテキストが入力された場合は正しくリダイレ​​クトされますが、列挙値以外の場合はリダイレクトされません. Url 入力が列挙値と一致するかどうかを確認する方法はありますか?

アクション結果

            [HttpGet]
    public ActionResult Index(string status, string message)
    {

        var referralStatus = ReferralStatus.New;

        if (!Enum.TryParse(status, out referralStatus))
        {
            referralStatus = ReferralStatus.New;
        }

        var model = new ReferralsModel();
        model.Status = referralStatus.ToString();

        model.ReferralsCount.Status = referralStatus.ToString();


        return View(model);
    }

インデックス ページにランディングしたときの URL は.. project/Referrals を読み取り、ページ上のタブを選択した後の URL は... project/Referrals?Status=2 を読み取り、Url project/Refferals?status に異なる番号を入力したときの URL =56473 の場合、ビューは列挙ステータス値の代わりにこれらの数値でレンダリングされます。

これはasp.net mvc 4アプリケーションであることに注意してください

4

1 に答える 1

0

編集:コメントに記載されているように、Enum.IsDefined列挙型の int 表現の解析に使用できます

 if (!Enum.TryParse(status, out referralStatus))

する必要があります

 if (!Enum.TryParse(status, out referralStatus) || !Enum.IsDefined(typeof(ReferralStatus),referralStatus))

あなたのコメントから、おそらく次のようなものを試すことができます:

ReferralStatus referralStatus;

try{
   referralStatus = (ReferralStatus) int.Parse(status);       
}
catch{
    status = ((int)ReferralStatus.New).ToString();
    referralStatus = ReferralStatus.New;   
}    
于 2013-11-14T16:04:06.097 に答える