0

我有下面form哪个是的method=get

@using (Html.BeginForm("Search", "Home", FormMethod.Get, htmlAttributes: new { @class = "main-search", id = "frmsearch", role = "form" })) {
<div class="row">
  <div class="col-md-3 col-sm-3">
    <div class="form-group">
      <label for="type">Property Type</label>
      @Html.ListBoxFor(m => m.searchModel.CategoriesId, Model.searchModel.Categories, htmlAttributes: new { id = "type", multiple = "multiple", @class = "animate", data_transition_parent = ".dropdown-menu", title = "All" })
    </div>
    <!-- /.form-group -->
  </div>

  <div class="col-md-3 col-sm-3">
    <div class="form-group">
      <label for="location">Location</label>
      @Html.DropDownListFor(m => m.searchModel.LocationID, Model.searchModel.Locations, htmlAttributes: new { id = "location", multiple = "multiple", @class = "animate", data_transition_parent = ".dropdown-menu", title = "All" })
    </div>
    <!-- /.form-group -->
  </div>
  <div class="col-md-3 col-sm-3">
    <div class="form-group">
      <label>Status</label>
      @Html.DropDownListFor(m => m.searchModel.StatusID, Model.searchModel.Status, htmlAttributes: new { id = "status", multiple = "multiple", @class = "animate", data_transition_parent = ".dropdown-menu", title = "All" })
    </div>
    <!-- /.form-group -->
  </div>
  <div class="col-md-2 col-sm-3">
    <div class="form-group">
      <label>Price</label>
      <div class="ui-slider" id="price-slider-category" data-value-min="@Model.searchModel.MinPrice" data-value-max="@Model.searchModel.MaxPrice" data-value-type="price" data-currency="&#8377;" data-currency-placement="before">
        <div class="values clearfix">
          @Html.TextBoxFor(m => m.searchModel.MinPrice, htmlAttributes: new { id = "value-min", @class = "value-min", name = "value-min[]", @readonly = "readonly", style = "padding:0px" }) 
          @Html.TextBoxFor(m => m.searchModel.MaxPrice, htmlAttributes: new { id = "value-max", @class = "value-max", name = "value-max[]", @readonly = "readonly", style = "padding:0px" })
        </div>
        <div class="element"></div>
      </div>
    </div>
    <!-- /.form-group -->
  </div>
  <div class="col-md-1 col-sm-3">
    <div class="form-group">
      <label></label>
      <button type="submit" style="color:white" id="searchSubmit" class="btn btn-block blue waves-effect">
        <i class="fa fa-search"> </i>
      </button>
    </div>
    <!-- /.form-group -->
  </div>
  <!--/.col-md-6-->
</div>
<!--/.row-->
}

我有这个JS来发布form价值AJAX

$(document).on('click', '#searchSubmit', function (e) {
        var _form = $(this).closest('form');
        var _url = _form.attr('action');
        var formData = _form.serialize();
        var request = $.get(_url, formData);
        request.complete(function (response) {

        })
})

这是我的model

public class SearchFilters
{
    public SearchFilters()
    {
         MinPrice = 10000;
         MaxPrice=8000000;
    }
    public IEnumerable<SelectListItem> Categories { get; set; }
    public int[] CategoriesId { get; set; }

    public IEnumerable<SelectListItem> Locations { get; set; }
    public int[] LocationID { get; set; }

    public IEnumerable<SelectListItem> Status { get; set; }
    public int[] StatusID { get; set; }

    public int MinPrice { get; set; }
    public int MaxPrice { get; set; }
}

这是我controller处理搜索请求的方法。

[HttpGet]
public ActionResult Search([Bind(Prefix = "searchModel")]SearchFilters smodel)
{
     ProjectsViewModel model = new ProjectsViewModel();
     //search db and fill model
     return PartialView("_PropertyDetails", model);
}

UI 渲染使用插件针对最小值和最大值进行noUiSlider,因此输入是readonly通过. 但是,无论何时在服务器中收到模型,它都会作为默认值分配给模型变量,即使在更新之后也是如此。检查时值不会更新,但会反映在. 是的,这是因为 的属性,但是在这些类型的情况下,还有其他方法可以发布只读属性值吗?下面是几张截图,展示了收到时的外观和价值。updatenoUiSliderDOMUIreadonlytextboxUIDOMmodel

用户界面

在此处输入图像描述

DOM

在此处输入图像描述

模型

在此处输入图像描述

更新

URL我可以在as...searchModel.MinPrice=₹2%2C189%2C090.00&searchModel.MaxPrice=₹5%2C772%2C480.00但不是在模型中看到发布的值。不知道怎么上这个..

4

1 回答 1

2
于 2016-01-14T18:25:25.947 回答