Ich erinnere mich an ein Blog (oder etwas), das besagt, dass Sie nicht <% verwenden sollten, wenn ...%> in ASPX-Dateien in ASP.NET MVC, aber ich kann mich nicht erinnern, was es gesagt hat die Alternative ist. Kann sich irgendjemand daran erinnern, das zu sehen und darauf hinzuweisen?"Wenn" in ASP.NET MVC View (ASPX) Dateien als schädlich angesehen?
Antwort
Ich bin mir nicht sicher, ob das, was Sie gesehen haben, aber here ist ein Blog, das es erwähnt. Siehe Punkt 11.
Ich fühle, dass es gut ist. Es ermöglicht dem Blick, die Präsentation zu kontrollieren.
Ich vermute, dass der Punkt war ein Versuch, Spaghetti-Code zu vermeiden, anstatt die Verwendung von "If" s, hier ist ein Link zu einem Rob Conery Blog darüber, er tatsächlich erwähnen, mit Helfern anstelle von Ifs so dies Vielleicht haben Sie gesehen, ASP.NET MVC: Avoiding Tag Soup
Ich denke, was Sie sich beziehen ein post by Rob Conery ist, wo er eine Regel erwähnt er verwendet:
Wenn ein
if
es, ein Helfer
So Ihre Frage zu beantworten machen, Die Idee dahinter ist, dass Sie, wenn Sie in Ihrer View if
verwenden müssen, eine Helper-Extension-Methode hinzufügen sollten, um stattdessen diesen Teil Ihrer View zu rendern.
Ist das das Problem, auf das Sie sich beziehen?
Bindungsausdrücke können nicht in Anweisungsblock <%% verwendet werden>, wie Aussagen nicht in einem verbindlichen Ausdruck Block <% #%>
verwendet werden - bruce (sqlwork.com)
"Jason" <> schrieb in Nachricht news: 23C11F83-A2AA-406D-BDEC -...
Was mit der folgenden if-Anweisung in meiner aspx Seite falsch ist?
"T" Dann%>Ich bekomme Fehler, der sagt: BC30201: Ausdruck erwartet.
Bruce Barker
Im Grunde, was es bedeutet, dass Sie nicht riesig haben sollten, wenn Aussagen in Ihren Ansichten, Ihre Controller und Viewmodels sollten die Logik zu handhaben können. Beispiel:
<h2 class="title">
<% if (ViewData["category"] == null { %>
All Products
<% } else { % >
<%= ViewData["category"] %>
<% } %>
</h2>
Sollten sein:
<h2 class="title>
<%= Model.Title %>
</h2>
Wenn Ihr Controller und Viewmodel kann die Logik nicht umgehen, sollten Sie Html-Helfer für kompliziertere Logik schreiben (so dass es wiederverwendbar und besser lesbar).
<h2 class="title>
<%= Html.GetPageTitle(Model.Category) %>
</h2>
Wie ich denke, der beste Ansatz für diese versuchen, ist Ihr, wenn die Bedingung in der Steuerung zu handhaben und die spezifische Ansicht für gewünschte Ergebnis übergeben oder den Namen der Ansicht in einer Variable übergeben zu machen.
public class HomeController :Controller
{
public ActionResult Category(string? category)
{
View viewToReturn;
if (category == null)
viewToReturn = View("CategoryList", repo.GetAllCategory); /// it is a View
else
viewToReturn = View("Category", repo.GetCategory(category)); /// it is a View
return viewToReturn;
}
}
Nun, Martin Antwort ist auch von Best Practices.
Ja, das ist der, an den ich mich erinnere! Die Links in den anderen Antworten sind auch gut, also danke! – JoelFan