Ich habe versucht, eine Option zum Wechseln zwischen einer Listenansicht und einer Widgetansicht in ASP.net MVC (mit Razor View Engine) zu erstellen.
Ich habe jedoch einige Probleme beim Versuch, ein Bild hinzuzufügen und es auf die richtige Höhe (die gleiche Höhe wie die nächste daneben) zu skalieren.
Ich wollte etwas schaffen wie:
[≡] List View | [+] Widget View
wo der [≡]
und der [+]
eigentlich kleine symbolbilder waren.
Bisherige Versuche umfassen:
Der Aktionslink war so etwas wie:
@Html.ActionLink("List View", "listView",
new { @style = "background-image:url('~/Content/Images/listIcon.png')" },null)
die nur den Text angezeigt.
Ich habe auch versucht, den Actionlink wie folgt zu erstellen:
<img src="~/Content/Images/listIcon.png" />@Html.ActionLink("List View", "Index")
aber dies löste sich in
a) das Bild war nicht Teil des Links; und
b) das Bild war fast doppelt so groß wie der Text (ähnlich wie in der Abbildung unten)
_ _ _ _
| | | |
| icon | | icon |
|_ _| List View | |_ _| Widget View
Es würde mir nicht einmal etwas ausmachen, es so zu erstellen:
_ _ _ _
| | | |
| icon | List View | | icon | Widget View
|_ _| |_ _|
wenn ich hätte zu.
Würde jemand wissen/beraten, wie man dies löst/schafft?
Sie können Url.Action für Hyperlink und Url.Content als Bildquelle verwenden.
Dann können Sie das Erscheinungsbild mit CSS gestalten.
<ul class="links">
<li>
<a href="@Url.Action("ListView", "Home")" title="List View" class="links">
<img alt="List View" src="@Url.Content("~/Images/ListView.png")">
List View
</a>
</li>
<li>
<a href="@Url.Action("WidgetView", "Home")" title="Widget View" class="links">
<img alt="Widget View" src="@Url.Content("~/Images/WidgetView.png")">
Widget View
</a>
</li>
</ul>
<style type="text/css">
ul.links {
list-style-type: none;
}
ul.links li {
display: inline-block;
border-left: 1px solid black;
padding-left: 10px;
margin-left: 10px;
}
ul.links li:first-child {
border-left: 0;
padding-left: 0;
margin-left: 0;
}
</style>
Sie müssen den Anker von Hand erstellen und den @Html.ActinLink
-Helfer verwenden. Sie können den @Url.Action
-Helfer verwenden
<a href="@Url.Action("YourAction", "YourController", null)">
<img src="yourImageSource" style="vertical-align: middle; width: 30px;"> List View
<a/> |
<a href="@Url.Action("YourAction", "YourController", null)">
<img src="yourImageSource" style="vertical-align: middle; width: 30px;"> Grid View
<a/>
Die Größe des Bildes kann über CSS geändert werden.
Die Url.Action gibt Ihnen den "Link zu Ihrer Aktion" . Der ActionLink erstellt einen Anker mit dem Link zur Aktion.
Der Grund, warum dieser Code nicht funktioniert hat:
@Html.ActionLink("List View", "listView", new { @style = "background-image:url('~/Content/Images/listIcon.png')" },null)
der dritte Parameter von @ Html.ActionLink dient dazu, zusätzliche Routenwerte hinzuzufügen. Wenn Sie weitere HTML-Attribute hinzufügen möchten, müssen Sie Folgendes verwenden:
@Html.ActionLink("List View", "listView", null, new { @style = "background-image:url('~/Content/Images/listIcon.png')" })
Außerdem können Sie, wie andere schon sagten, das ~ nicht verwenden.
Beachten Sie, dass Inline-Stile im Allgemeinen nicht gern gesehen werden, da die beste Vorgehensweise darin besteht, eine CSS-Klasse zu erstellen, die Ihr Hintergrundbild enthält, und die Klasse stattdessen als HTML-Attribut hinzuzufügen. @Style funktioniert jedoch auch hier funktional. Weitere Informationen dazu, warum Inline-Stile schlecht sind, finden Sie hier: Was ist so schlecht an Inline-CSS?
Versuche dies:
Html.ActionLink(" ", "Edit", new {id = c.ID}, new { @style = "background:url('../../Images/Menu/edit.png') no-repeat center right; display:block; height: 30px; width: 50px" }