Asp.net mvc 如何删除querystring asp.net mvc中的空参数

Asp.net mvc 如何删除querystring asp.net mvc中的空参数,asp.net-mvc,asp.net-mvc-routing,query-string,Asp.net Mvc,Asp.net Mvc Routing,Query String,所以,我有一个方法,它接受一个字符串和一个对象,这个对象有MVC转换成querystring参数的值,我的问题是在哪里以及如何去除空的参数,这样我的url就更干净了 表格: 路由链路: routes.MapRoute ( "Default", "{controller}/{action}/{id}", new {controller = "Home", action = "Index"

所以,我有一个方法,它接受一个字符串和一个对象,这个对象有MVC转换成querystring参数的值,我的问题是在哪里以及如何去除空的参数,这样我的url就更干净了

表格:

路由链路:

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

class formModel{

 public string name {get;set;}
 public int? age {get;set;}
 public Guid? jobId{get;set;}
 public string Fullname {get;set;}

 } 
对象属性:

     formModel{
                  name: "Mike",
                  age: 29,
                  jobId: null,
                  Fullname: ""
              }
控制器操作:

    [HttpGet]
    public ActionResult Index(string sortByText, SearchFormModel formModel)
    {
        var model = new SomeViewModel();
        model.FormModel = formModel;
        //etc

        return View(model);
    }
网址:

例如:


如何摆脱jobId和Fullname并查找?

我最终使用客户端javascript过滤表单数据,从而避免了任何不必要的或空的查询参数。

一种可能性是使其可为null,而不是传递它。另一种方法是传递一个伪值,比如0。我正在研究Global.asax的路由,看看我是否可以在那里做些什么。它在路由中的作用不如你的动作方法参数大。接受可为空的id,或通过将id默认为0使其成为可选id。是否可以在Get请求中传递对象?是的,它使用对象工作,但我只想去掉用户在搜索中未输入的额外参数。
    [HttpGet]
    public ActionResult Index(string sortByText, SearchFormModel formModel)
    {
        var model = new SomeViewModel();
        model.FormModel = formModel;
        //etc

        return View(model);
    }