2013-10-07 2 views
0

Я очень новичок в ASP.NET MVC4. У меня есть приложение, которое использует многочисленные частичные представления, в настоящее время у меня есть контроллер, который я использую, чтобы возвращать PartialView для каждого из них, создавая очень длинный файл.Контроллер для рендеринга всех Partial Views

public PartialViewResult somePartial() 
    { 
     return PartialView("someParital"); 

    } 
public PartialViewResult someOtherPartial() 
    { 
     return PartialView("someOtherParital"); 

    } 

Есть ли способ создать контроллер, который вернет PartialView для всей папки/каталога?

Спасибо,

+1

Что вы делаете с этими частичными видами? Кажется маловероятным, что вам действительно нужен собственный метод для возврата частичных представлений. Возможно, если вы подробно остановитесь на том, что вы пытаетесь достичь, мы сможем показать вам лучший способ достичь конечного результата. –

ответ

1

Вы можете оказывать Partial Views непосредственно в разметку, используя HTML Helper. Самый простой способ - сохранить каждое имя Partial View в List где-нибудь, а затем использовать его для визуализации каждого Partial View по имени.

@{ 
    var myPartialViews = new string[] { "someParital", "someOtherParital" }; 
} 

@foreach(string partialView in myPartialViews) 
{ 
    Html.Partial(partialView) //or Html.RenderPartial(partialView); 
} 
+0

Если вы используете 'Html.Partial', вы должны использовать' @ ', так как он возвращает строку и не отправится в никуда. Если вы используете 'Html.RenderPartial', он напишет строку в ответе и вам не понадобится nuget. –

0

Вы можете вернуть несколько частичный вид Использование возврата JSon данных в виде строки PartialView, как описано здесь https://stackoverflow.com/a/18978036/2318354

return Json(new { strPartial1 = RazorViewToString.RenderRazorViewToString(this, "someParital", model) , strPartial12 = RazorViewToString.RenderRazorViewToString(this, "someOtherParital", model2) }); 

Теперь вместо того, чтобы использовать UpdateTargetId на функции Success сделать следующим образом Ajax Request

@Ajax.ActionLink("Link-Name", "ActionName", "ControllerName", new AjaxOptions {OnSuccess = "scsFunction" }) 

на javaScript

function scsFunction(response) { 
    var temphtml1 = response.strPartial1 ; 
    var temphtml2 = response.strPartial2 ; 

    $("#dvPartial1").html(temphtml1); 
    $("#dvPartial2").html(temphtml2); 

    } 

Таким образом вы можете обновить номер частичного просмотра при одном действии.

Смежные вопросы