флажок подключения к запросу в качестве критерия фильтра для значений - PullRequest
0 голосов
/ 01 апреля 2012

Я новичок в MS MVC, и у меня есть эта проблема. Я пытаюсь отфильтровать данные в базе данных с помощью некоторых флажков.Я использую MS MVC.LINQ to SQL, MS SQL Express.

 <% using (Html.BeginForm())
      { %>
      <fieldset>
      <legend>Search filter</legend>
      <fieldset style="width:130px;height:150px;float:left;margin-left:10px">
      <legend></legend>
    <table>
  <tr><td><%= Html.CheckBox("checkbox", false)%></td><td>Solar</td></tr>
  <tr><td><%= Html.CheckBox("checkbox1", false)%></td><td>Water</td></tr>
  <tr><td><%= Html.CheckBox("checkbox2", false)%></td><td>Biomas</td></tr>
  <tr><td><%= Html.CheckBox("checkbox3", false)%></td><td>Other....</td></tr>
  </table>
  </fieldset>

Controller.cs

public ActionResult Search()
        {
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Search(FormCollection formValues)
        {
            string value = formValues["checkbox"];
            string value2 = formValues["checkbox1"];
            string value3 = formValues["checkbox2"];
            string value4 = formValues["checkbox3"];

            var dataContext = new powerPlantModelDataContext();

            var solar = from q in dataContext.TypeDetails
                              where q.KindName.Equals(value.ToString())
                              select q;

            if (solar != null) { ViewData["solar"] = solar.ToList(); }

            return View();
        }

Сбор и просмотр данных в view.aspx

<%foreach (RenewalSourcesWeb.Models.TypeDetail solar in (List<RenewalSourcesWeb.Models.TypeDetail>) ViewData["solar"]) {%>
    <table>

    <tr><td>Value1</td><td><%=solar.Description %></td></tr>
    <tr><td>Value2</td><td><%=solar.KindName %></td></tr>

    </table>
    <%} %>

Моя проблема заключается в том, чтозначение флажка - я полагаю, что true или false - нет, и я не могу заставить это работать.Если у кого-то есть какое-либо предложение, я буду признателен за любую помощь. Также, если у кого-то есть предложение решить несколько флажков, это правда.

1 Ответ

1 голос
/ 01 апреля 2012

Вот несколько советов для вас:

1.) Если у вас нет требования, которое вынуждает вас использовать MVC версии 2 или 1, перейдите из движка представления WebForms (<% синтаксис, подобный этому%>)в Razor view engine (@Syntax.LikeThis).

2.) Используйте строго типизированную ViewModel вместо ViewData.

public class SearchViewModel
{
    public bool checkbox { get; set; }
    public bool checkbox1 { get; set; }
    // ...etc
}

public ActionResult Search()
{
    return View(new SearchViewModel());
}

<tr><td>@Html.CheckBoxFor(m => m.checkbox)</td><td>Solar</td></tr>
<tr><td>@Html.CheckBoxFor(m => m.checkbox1)</td><td>Water</td></tr>

[HttpPost]
public ActionResult Search(SearchViewModel model)
{
    string value = model.checkbox;
    string value2 = model.checkbox1;
    // ...etc

3.) При поиске отправьте формуиспользуя GET вместо POST.POST - это когда вы меняете данные, а GET - когда вы запрашиваете данные (например, поиск).

@using (Html.BeginForm("Search", "Search", FormMethod.Get))
{
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...