1

C# を使用して MVC 3 の検索ボックスを検証しようとしているため、ユーザーが何も入力しないと、ViewBag に「検索クエリを入力してください」というメッセージが表示されます。

public ViewResult Index(string sortOrder, String searchString)
{
   ViewBag.NamesSortParm = String.IsNullOrEmpty(sortOrder) ? "Name desc" : "";
   ViewBag.UserSortParm = sortOrder == "UserID" ? "Name" : "Song";
   var User = from s in db.User select s;

   if (!String.IsNullOrEmpty(searchString))
   {
      User = Users.Where(s => s.Name.ToUpper().Contains(searchString.ToUpper())
                           || s.Songs.ToUpper().Contains(searchString.ToUpper()));
   }
   switch (sortOrder)
   {
      case "Name":
        Users = Users.OrderByDescending(s => s.Name);
        break;
      case "Songs":
        Users = Users.OrderByDescending(s => s.Song);
        break;
      default:
        Users = Users.OrderBy(s => s.Name);
        break;
   }

   // ...
}
4

2 に答える 2

5

ビュー用の簡単なモデルを作成してみませんか

public class UserSearch
{
    [Required]
    public string SearchString {get;set;}
    [Required]
    public string SortOrder {get;set;}    
}
于 2012-04-12T11:13:12.733 に答える
4

ベンが言ったように、単純なビューを作成するようにしてください。さらに、いくつかのメタデータ属性をクラスに追加します (その後、クラスで作業できます)。次のようになります。

namespace Models
{
    [MetadataType(typeof(UserSearchMetadata))]
    public partial class UserSearch
    {
        //some class
    }

    public class UserSearchMetadata
    {
        [Required] //required attribute
        public string SearchString {get;set;}
    }
}

次に、強く型付けされたビューを作成すると、ユーザーが SearchString に何も書き込まないと、検証メッセージが表示されます:)

于 2012-10-16T13:26:17.127 に答える