我是 asp.net 的新手,我被要求用該平臺構建一個寧靜的 API,我管理并完美地構建了 API,它正在 100% 作業,我現在必須為 API 構建一個前端。它只是管理電子郵件布局。該 API 用于捕獲詳細資訊、發布到資料庫和發送電子郵件。那部分正在作業。
我的問題來了,前端,整個MVC結構我似乎無法理解。
我的目標:在單擊按鈕時執行 c# 代碼。
我要構建的第一個頁面是登錄頁面。我已經撰寫了所有 c# 模型來創建用戶并保存到資料庫中。我只想弄清楚單擊按鈕時如何運行我的 c# 函式。
使用 asp:button 無濟于事,因為我無法生成點擊事件,因為頁面后面沒有 c# 代碼......我正在使用的視圖是 MCV 5 視圖頁面(剃刀)
我的 HTML 標記:
<div class="lg-conatiner">
<h1>Create an account</h1>
<div class="loginBox registerBox">
<div class="loginItem">
<input placeholder="company name" />
</div>
<div class="loginItem">
<input placeholder="username" />
</div>
<div class="loginItem">
<input placeholder="password" type="password" />
</div>
<div class="loginItem">
<input placeholder="confirm password" type="password" />
</div>
<div class="loginItem loginItem3">
<button onclick="" type="button">Register</button>
<a href="">@Html.ActionLink("Back to Login", "Login", "Account")</a>
</div>
</div>
</div>
單擊按鈕時我想運行的 c# 函式:
public void registerUser(User newUser)
{
dataAccess da = new dataAccess();
if(!string.IsNullOrWhiteSpace(newUser.username) || !string.IsNullOrWhiteSpace(newUser.password) || !string.IsNullOrWhiteSpace(newUser.companyname))
{
try
{
//all good, register user
da.insertUser(newUser);
}
catch (Exception ex)
{
throw ex;
}
}
}
資料訪問類只包含一個運行我的 SQL 存盤程序以插入用戶的函式。
uj5u.com熱心網友回復:
您可以通過多種方式將資料發送到Controller服務器上的方法。我將向您展示如何使用一種非常基本的方法來實作您的注冊功能,該強型別Model將保存您的注冊詳細資訊,然后將其發送到服務器進行處理:
在您的模型目錄下創建一個Model名為 Register 的目錄:
public class Register
{
[Required]
public string CompanyName { get; set; }
[Required]
public string UserName { get; set; }
[Required]
public string Password { get; set; }
}
然后Model在渲染初始視圖時對其進行初始化。在您的 Controllers 檔案夾下,創建一個名為的新控制器Register,并在其中定義一個名為Index. 此方法負責設定您的索引視圖,并將模型系結到欄位:
using project.Models;
public class RegisterController : Controller
{
public ActionResult Index()
{
Register register = new Register();
return View(register);
}
}
現在這個控制器方法負責使用 Register 模型將操作路由到 Index 視圖。您可以HtmlHelpers像這樣使用將輸入的值系結到模型值。您應該將您的元素包裝在form您將發布到您的Controller:
Index.cshtml:
@using project.Models
@model Register
<div class="lg-conatiner">
<h1>Create an account</h1>
@Html.ValidationSummary(true, null, new { @class = "text-danger", style = "font-size:20px"})
@using (Html.BeginForm("Register", "Register", FormMethod.Post, new { @class = "form", role = "form", enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<div class="loginBox registerBox">
<div class="loginItem">
@Html.TextBoxFor(m => m.CompanyName , new { @id = "companynameID", @class = "form-control", @required = "required", @placeholder = "Enter Company Name", @autocomplete = "off" })
</div>
<div class="loginItem">
@Html.TextBoxFor(m => m.UserName , new { @id = "usernameID", @class = "form-control", @required = "required", @placeholder = "username", @autocomplete = "off" })
<input placeholder="username" />
</div>
<div class="loginItem">
@Html.TextBoxFor(m => m.Password, new { @id = "passwordID", @class = "form-control", @required = "required", @placeholder = "Enter Password", @autocomplete = "off", @type = "password" })
<input placeholder="password" type="password" />
</div>
<div class="loginItem">
<input placeholder="confirm password" type="password" id="confirmpasswordID"/>
</div>
<div class="loginItem loginItem3">
<button type="submit" class="btn btn-block btn-primary">Register</button>
</div>
</div>
}
<br>
<a href="">@Html.ActionLink("Back to Login", "Login", "Account")</a>
</div>
上面的 View 使用Bootstrap元素來顯示表單。我們還使用您可以在此處@Html.AntiForgeryToken()閱讀更多內容的
現在,一旦您的視圖設定完畢,您就可以Post將您的資料變成Controller這樣:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(Register register)
{
dataAccess da = new dataAccess();
try
{
var result= da.insertUser(register);
if(!da)
{
ModelState.AddModelError("", "Could not register");
}
else
{
ModelState.AddModelError("", "Successfully registered");
}
}
catch (Exception ex)
{
ModelState.AddModelError("", "Exception in registering user");
//Log the exception
}
return View("Index", register);
}
There are other ways also in which you can send your form data to your Controller methods like using AJAX or JQuery to validate your elements first and then send them to Controller. The above implementation is a basic outline of how you can post your data through a Model.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/431512.html
標籤:C# 网 asp.net-mvc 剃刀
