Zunächst einmal bin ich neu bei Umbraco, also wenn Sie einige grundlegende Fehler sehen, urteilen Sie nicht über mich.Kann den Quellentyp Umbraco.Web.Models.RenderModel nicht an den Modelltyp binden. Repower.Cms.Umbarco.Models.Test
So derzeit ein Login-Formular Ich schaffe, die er an die Datenbank geht (Check Benutzername und Passwort) und den Wert liest, die er zurückkommt und ihn uns lassen Cannot bind source type Umbraco.Web.Models.RenderModel to model type Repower.Cms.Umbraco.Models.Test.
Das ist mein HTML:
@inherits Umbraco.Web.Mvc.UmbracoViewPage<Repower.Cms.Umbraco.Models.Test>
@{
Layout = "Master.cshtml";
}
<style type="text/css">
.btnStyle {
border: thin solid #000000;
line-height: normal;
width: 80px;
}
</style>
@using (Html.BeginForm("Test", "MembersProtectedPage", FormMethod.Post))
{
<div class="fontStyle">
<center>
<table style="margin-top: 100px;margin-left:150px">
<tr style="height:30px">
<td align="right">
@Html.LabelFor(m => m.User)
</td>
<td style="width:200px" align="right">
@Html.TextBoxFor(m => m.User)
</td>
<td style="width:250px;color:Red" align="left">
@Html.ValidationMessageFor(m => m.User)
</td>
</tr>
<tr style="height:30px">
<td align="right">
@Html.LabelFor(m => m.Password)
</td>
<td align="right">
@Html.PasswordFor(m => m.Password)
</td>
<td style="width:250px;color:Red" align="left">
@Html.ValidationMessageFor(m => m.Password)
</td>
</tr>
<tr style="height:30px">
<td colspan="2" align="center">
<input type="submit" value="Sign In" class="btnStyle" />
</td>
</tr>
</table>
</center>
</div>
}
Das ist mein Modell:
public class Test : RenderModel
{
public Test() : this(new UmbracoHelper(UmbracoContext.Current).TypedContent(UmbracoContext.Current.PageId)) { }
public Test(IPublishedContent content, CultureInfo culture) : base(content, culture) { }
public Test(IPublishedContent content) : base(content) { }
string connString = ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;
SqlConnection conn;
SqlCommand sqlcomm;
public string User { get; set; }
public string Password { get; set; }
public bool IsUserExist(string emailid, string password)
{
bool flag = false;
conn = new SqlConnection(connString);
conn.Open();
sqlcomm = new SqlCommand();
sqlcomm.Connection = conn;
sqlcomm.CommandType = System.Data.CommandType.StoredProcedure;
sqlcomm.CommandText = "dbo.uspLogin";
sqlcomm.Parameters.AddWithValue("@pLoginName", User);
sqlcomm.Parameters.AddWithValue("@pPassword", Password);
SqlParameter retval = sqlcomm.Parameters.Add("@RESULT", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery(); // MISSING
string retunvalue = (string)sqlcomm.Parameters["@RESULT"].Value;
switch (retunvalue)
{
case "0":
flag = true;
break;
case "1":
flag = false;
break;
case "2":
flag = false;
break;
default:
flag = false;
break;
}
return flag;
}
}
Und das ist mein Controller:
public class TestController : Controller
{
public ViewResult Login()
{
return View();
}
[HttpPost, ValidateInput(false)]
public ActionResult Login(Test model)
{
if (ModelState.IsValid)
{
if (model.IsUserExist(model.User, model.Password))
{
ViewBag.UserName = model.User;
FormsAuthentication.RedirectFromLoginPage(model.User, false);
}
else
{
ModelState.AddModelError("", "Username or Password Incorrect.");
}
}
return View(model);
}
}
Also erbte ich ein RenderModel, weil mein Fehler zuvor "Das in das Wörterbuch übergebene Modellelement war vom Typ Repower.Cms.Umbarco.Models.Test", aber dieses Wörterbuch benötigt ein Modellelement vom Typ 'Umbraco. Web.Models.RenderModel '. " Also habe ich es geändert (viel im Internet gesucht) und jetzt bekomme ich diesen Fehler.
Ist auch der Rest des Codes korrekt? Die Art, wie ich auf die Datenbank zugreife und alles? Ich erwarte einen Rückgabewert von der Datenbank (weiß nicht, ob das korrekt ist)
Könnte mir bitte jemand helfen? Ich muss das heute machen.
Vielen Dank im Voraus
Großartig! Vielen Dank, das hat funktioniert! Die Sache ist jetzt auf der Anmeldung gibt es mir einen Fehler, wo es heißt string retunvalue = (String) sqlcomm.Parameters ["@ RESULT"]. Value; 'Der Fehler ist: System.InvalidCastException: 'Kann nicht Objekt von Geben Sie 'System.Int32' ein, um 'System.String' einzugeben. ' Haben Sie eine Idee, was es sein könnte? Gehe ich auf die richtige Weise auf die Datenbank? Vielen Dank! –
Die Datenbank gibt wahrscheinlich eine Ganzzahl der Anzahl der Zeilen zurück, die geändert wurden (also rate ich die Ganzzahl '1'). Sie könnten 'sqlcomm.Parameters [" @ RESULT "]. Value.ToString()' oder besser noch nicht in String konvertieren: 'int retunvalue = sqlcomm.Parameters [" @ RESULT "]. Wert' – Harvey
Ich habe es geschafft Arbeit! Vielen Dank! –