Как вы показываете свои результаты только после того, как пользователь нажимает кнопку поиска в приложении Asp.Net MVC - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть представление Index.cshtml, частичное представление Filter.cshtml и частичное представление Results.cshtml.Я хочу видеть значения из моего точного представления Results.cshtml после , когда пользователь нажал кнопку поиска, а также содержимое из Index.cshtml и Filter.cshtml.Как мне структурировать свои страницы, чтобы видеть содержимое файла Results.cshtml после нажатия кнопки поиска вместе с другим содержимым?

Это то, что у меня есть для представления Index.cshtml

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}

@{ Html.RenderPartial("Filter"); }
@{ Html.RenderPartial("Results"); }

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Если вы можете использовать jQuery, вы можете сделать что-то вроде этого

В вашем View вы можете иметь контейнер для результатов

Html

<div id="result-container"></div>

И используя jQuery, вы получите содержимое при нажатии кнопки «Отправить»

JavaScript

$(document).ready(function () {
    $('#submit').click(function () { 
        $.ajax({
            type: 'GET',
            url: 'YourController/ActionThatReturnPartialView',
            data: {
                // your form data here
            }
        }).done(function (html) {
            // place the partial view to the container
            $('#result-container').html(html);
        });            
    });
});

Контроллер

public class YourController
{    
    public ActionResult ActionThatReturnPartialView()
    {
         // get parameters and do some logic
         return PartialView(model);     
    }    
}
0 голосов
/ 20 февраля 2012

Вы можете использовать модель представления:

public class MyViewModel
{
    public string Filter { get; set; }
    public string Results { get; set; }
}

, а затем:

public class HomeController: Controller
{
     public ActionResult Index()
     {
         return View(new MyViewModel());
     }

     [HttpPost]
     public ActionResult Index(MyViewModel model)
     {
         model.Results = "this is the result"; 
         return View(model);
     }
}

и в представлении:

@model MyViewModel
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@{ Html.RenderPartial("Filter"); }
@if (Model.Results != null)
{
    @{ Html.RenderPartial("Results"); 
}

и использовать шаблоны:

@model MyViewModel
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@Html.EditorFor(x => x.Filter)
@if (Model.Results != null)
{
    @Html.DisplayFor(x => x.Results)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...