Beiträge mit tag "mvc
HowTo: Bilder mit CKEditor und ASP.NET MVC hochladen
0Ich hatte gerade das Problem, dass ich mit dem WYSIWYG-Editor CKEditor Bilder hoch laden möchte, um sie direkt in meinen Text einzupflegen.
Dazu wird irgendwo im View der Editor definiert:
<script type="text/javascript">
window.onload = function() {
CKEDITOR.replace('ckEditor', {
skin: 'office2003',
filebrowserUploadUrl: '<%=Url.Action("UploadImage") %>'
});
};
</script>
Wichtig ist hier der Parameter “filebrowserUploadUrl”. Dies ist der Pfad, wohin das Bild beim Upload gesendet wird.
Im Controller wird das ganze nun verarbeitet:
[AcceptVerbs(HttpVerbs.Post)]
public string UploadImage()
{
// Datei speichern
var identifier = Guid.NewGuid();
string[] fileExt = Request.Files[0].FileName.Split('.');
string safeFile = identifier + "." + fileExt[fileExt.Length - 1];
Request.Files[0].SaveAs(Path.Combine(HostingEnvironment.MapPath("~/UploadedImages/"), safeFile));
// Daten an CKEditor zurück geben
string result = "<script type=\"text/javascript\">";
result += "window.parent.CKEDITOR.tools.callFunction(" + Request.QueryString["CKEditorFuncNum"] + ", \"" +
Path.Combine(Url.Content("~/UploadedImages/"), safeFile) + "\",\"\");</script>";
return result;
}
Erst speicher ich das Bild irgendwo und gebe dann den Pfad per Javascript zurück. Da ich nur das JS ausführen lassen muss, gebe ich kein komplettes View zurück. Die Url wird dann korrekt an CKEditor übergeben (siehe Screenshots). Der letzte Parameter des callFunction()-Aufrufes kann für Fehlermeldungen genutzt werden, Bild zu groß o.ä.
Mich hat dieser kleine Aufruf bestimmt eine Stunde gekostet!
Linq: Group By mit mehren Werten
0Um bei einer Seite auf alte News zu greifen zu können, wollte ich eine Liste wie hier im Blog anhand “Monat Jahr” bekommen. Daher musste ich nach zwei Werten gruppieren, dies geht am einfachsten mit einem anonymen Wertetyp:
var dateListe = from dateStamps in this.DataList
group dateStamps by
new {dateStamps.PostedTime.Year, dateStamps.PostedTime.Month}
into g
select new
{
Year = g.Key.Year,
Month = g.Key.Month,
Count = g.Count()
};
Habe mir kurz als Debugmeldung einen String daraus gebastelt:
foreach (var liste in linkListe)
{
ViewData["test"] += "Datum: " + liste.Month + " " + liste.Year + " Anzah: " + liste.Count + "<br />";
}
Als Rückgabe erhaltet ihr eine Liste:
Datum: 1 2006 Anzah: 1 Datum: 3 2006 Anzah: 2
Damit kann man Arbeiten
ASP.NET MVC: Seiten gehen nicht auf IIS5.1
0Wir hatten folgendes Problem, wir entwickeln an einer ASP.NET Seite. Mit dem lokalen Entwicklungswebserver funktionierten die Seiten tadellos.
Als wir sie dann hochluden, gingen einige Seiten nicht und wir wussten nicht genau warum.
Nach einiger Sucherei konnten wir dies auf die <connectionStrings> in der web.config zurückführen.
Durch einen Kollegen stand dort folgende zwei Einträge drin:
<add name="PersonalSettingsEntities"
connectionString="metadata=res://*/Models.Personal.csdl|res://*/Models.Personal.ssdl|res://*/Models.Personal.msl;provider=System.Data.SqlClient;provider connection string="Data Source=WXPAPP02\SQLEXPRESS;Initial Catalog=IntranetDB;User ID=sa;Password=sa;Pooling=False;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
<add name="PersonalEntities"
connectionString="metadata=res://*/Models.Home.csdl|res://*/Models.Home.ssdl|res://*/Models.Home.msl;provider=System.Data.SqlClient;provider connection string="Data Source=WXPAPP02\SQLEXPRESS;Initial Catalog=IntranetDB;User ID=sa;Password=sa;Pooling=False;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
Der Unterschied zu den anderen Connectionstrings war, dass diese Einträge die Einträge “Pooling=False;” enthält, und den Eintrag “Persist Security Info=True;” war nicht enthalten.
Die Zeilen entsprechend abgeändert, schon ging es.
Werde nachher noch mal genaue Erklärung zu den beiden Parametern raussuchen.
ASP.NET MVC: nl2br() Ersatz für HtmlHelper
3Da ich ja ursprünglich von PHP herkomme, habe ich natürlich eine schöne Funktion wie nl2br() vermisst.
Da ich nichts gescheites gefunden habe, habe ich natürlich die Funktionen von C#3.0 ausgenutzt und einfach die HtmlHelper Class erweitert.
Vielleicht kann es ja wer gebrauchen.
using System.Web.Mvc;
namespace MyProject.CustomExtensions
{
public static class MyHtmlHelperExtensions
{
public static string Encode(this HtmlHelper html, string text, bool convertNewLine)
{
if (convertNewLine)
{
return html.Encode(text).Replace("\n", "<br />");
}
return html.Encode(text);
}
public static string Encode(this HtmlHelper html, object text, bool convertNewLine)
{
if (convertNewLine)
{
return html.Encode(text).Replace("\n", "<br />");
}
return html.Encode(text);
}
}
}
C# – Wissenwertes zu IEnumerable und wie man es richtig nutzt
0Peter Bucher hat einen interessanten Artikel rund um IEnumerable und wie und wann man es richtig nutzt veröffentlicht.
Sollte man mal gelesen haben und natürlich auch anwenden. Ich werd es auf jeden Fall!
Wann IEnumerable nutzen, wann ICollection und wieso überhaupt IList?
Gibt in dem Blog übrigens noch andere lesenswerte Beiträge!


Recent Comments