MVC3 возможно ли обслуживать секцию просмотра из действия контроллера? - PullRequest
1 голос
/ 27 мая 2011

Предположим, у меня есть index.cshtml

@{
    ViewBag.Title = "Index";
}
@model SomeModel

@section JS{     
    content1
    content2
    content3
}

<div> View Content </div>

Есть ли какой-нибудь способ, которым я мог бы иметь действие контроллера, которое будет обслуживать ТОЛЬКО раздел JS для запроса на index.js?

Такой, что переход к http://somesite/index.js вернет

    content1
    content2
    content3

Редактировать: Некоторые дальнейшие мысли по этому поводу. Моя цель заключается в том, чтобы, например, создать страницу макета, для которой требуется программный раздел JS, а затем создать представление для этой страницы макета и затем вернуть результаты этого.

Пример кода Psuedo:

var layout = new LayoutPage();
layout.DefineSection("JS", required: true);
layout.Compose(View("index"))
return layout;

Я не собираюсь достигать этого с помощью того, что я описал, но я чувствую, что это может дать более глубокое понимание того, чего я хотел бы достичь.

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Вы можете сделать что-то вроде этого (но вам нужно написать собственное действие контроллера, чтобы сделать это правильно)

Index.cshml

@model MvcApplication1.Models.TestModel
@{
    ViewBag.Title = "Home Page";
}

<h2>@ViewBag.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>

@section JS {
    blahblahblah
}

JSLayout:

@RenderSection("JS")

Ваш контроллер Action

public ActionResult Index() {
    return View("Index", "_JSLayout", yourModel);
}

Будет выведен только раздел JS. Если вы хотите сделать это программно, тогда это займет немного.

0 голосов
/ 27 мая 2011

Единственный способ сделать это - превратить содержимое этого раздела в частичное представление и вернуть частичное представление из действия контроллера.

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