Создание ASP.Net MVC сайта, фильтрация контента - PullRequest
0 голосов
/ 25 июля 2011

Я недавно запустил проект MVC, чтобы запрашивать и сообщать пользователям компании, все было в порядке, кроме того, что когда я сделал форму Finduser, я застрял!

вы видите, я хочу, чтобы операторбыть в состоянии найти подходящего пользователя, введя либо PIN-код хоста, серийный номер или номер вызывающего абонента, но все ссылки на действия, которые я создаю для операции поиска, не работают, потому что они создаются во время form_load, и поэтому им вводится пустая строка текстовых полей.

Итак, мои запросы:

  1. Как заставить работать эти фильтры.
  2. Теперь было бы замечательно добавить подсказку в виде текстового поля Ajax на пин-код пользователя или серийный номер, пожалуйста, дай мненамек или два.

<table> <tr> <td> PIN:</td> <td> <asp:TextBox ID="txt_pin" runat="server"></asp:TextBox> </td> </tr> <tr> <td> Serial Number:</td> <td> <asp:TextBox ID="txt_sn" runat="server"></asp:TextBox> </td> </tr> <tr> <td> CallingNumber:</td> <td> <asp:TextBox ID="txt_callingNo" runat="server"></asp:TextBox> </td> </tr> <tr> <td> CalledThisNumberToday:</td> <td> <asp:TextBox ID="txt_calledNo" runat="server"></asp:TextBox> </td> </tr> <tr> <td> &nbsp;</td> <td> &nbsp;</td> </tr> <tr> <td> </td> <td> &nbsp;</td> </tr> </table><br> <%:Html.ActionLink("Search for user", "Details", new { pin = txt_pin.Text })%>

Ответы [ 2 ]

5 голосов
/ 25 июля 2011

<asp:TextBox>? В приложении ASP.NET MVC? Боюсь, вы все неправильно поняли.

Я бы порекомендовал вам пройти здесь уроки по началу работы, чтобы изучить основные понятия ASP.NET MVC: http://asp.net/mvc

В ASP.NET MVC вы используете модели, а в представлениях вы используете помощники для генерации полей ввода.

Итак, в вашем случае вы можете создать модель вида:

public class SearchViewModel
{
    public string Pin { get; set; }
    public string SerialNumber { get; set; }
    public string CallingNumber { get; set; }
    public string CalledThisNumberToday { get; set; }
}

тогда вы можете разработать действие контроллера, которое передаст эту модель представления в представление для отображения формы поиска:

public ActionResult Index() 
{
    var model = new SearchViewModel();
    return View(model);
}

и, наконец, в вашем строго типизированном представлении вы будете использовать помощники HTML:

<%@ Page 
    Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
    Inherits="System.Web.Mvc.ViewPage<AppName.Models.SearchViewModel>" %>

<asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" runat="server">

    <%= Html.ValidationSummary() %>

    <% using (Html.BeginForm()) { %>

        <div>
            <%= Html.LabelFor(x => x.Pin) %>
            <%= Html.EditorFor(x => x.Pin) %>
        </div>

        <div>
            <%= Html.LabelFor(x => x.SerialNumber) %>
            <%= Html.EditorFor(x => x.SerialNumber) %>
        </div>

        <div>
            <%= Html.LabelFor(x => x.CallingNumber) %>
            <%= Html.EditorFor(x => x.CallingNumber) %>
        </div>

        <div>
            <%= Html.LabelFor(x => x.CalledThisNumberToday) %>
            <%= Html.EditorFor(x => x.CalledThisNumberToday) %>
        </div>

        <p><input type="submit" value="Search for user" /></p>
    <% } %>

</asp:Content>

и последним шагом будет реализация действия контроллера, которое будет выполнять поиск и которому будет добавлена ​​эта форма:

[HttpPost]
public ActionResult Index(SearchViewModel model)
{
    if (!ModelState.IsValid) 
    {
        // the model was not valid => redisplay the form
        // so that the user can fix his errors
        return View(model);
    } 

    // TODO: perform the search
    ...
}
1 голос
/ 25 июля 2011

Наряду с отличным ответом Дарина (которому вы действительно должны следовать, чтобы все делалось по-MVC) ... вы также можете выполнять AJAX-фильтрацию для таблицы, используя jQuery.Есть даже плагин для jQuery , который делает фильтрацию таблиц в реальном времени столь же простой, как добавление ссылки на скрипт и текстовое поле, а затем пару строк кода Javascript, чтобы связать поиск.В итоге это будет выглядеть примерно так:

<script language="javascript" type="text/javascript" src="/Scripts/jquery.js"></script>
<script language="javascript" type="text/javascript" src="/Scripts/jquery.uitablefilter.js"></script>
<script language="javascript" type="text/javascript">
    $(document).ready(function () {
        $("#myFilter").keyup(function () {
            $.uiTableFilter($("#myTable"), $(this).val());
        });
    });
</script>


<input type="text" id="myFilter" />

<table id="myTable">
...
</table>

Когда вы начнете вводить текст в поле фильтра, таблица будет автоматически отфильтрована, чтобы показать только строки, содержащие указанное значение.

Какдля предложений автозаполнения вы можете посмотреть jQUery UI - у них есть поддержка автозаполнения с использованием нескольких различных механизмов для предоставления значений подсказок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...