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 回答