我有一些 ASP.NET Webform,需要开始转换为 ASP.NET Core Razor 页面。
下面我有一个示例,说明其中一个页面当前如何运行,以了解我正在使用的内容,但我不确定从哪里开始将其全部转换为 Razor 页面。我愿意接受其他解决方案
HTML
<input type="search" class="form-control" placeholder="Enter Device Name or Number" id="searchval" />
<div class="input-group-append">
<button class="btn btn-primary" type="button" onclick="search()"></button>
<span id="number"></span>
<span id="name"></span>
<span id="model"></span>
JavaScript
function search() {
var device = $('searchval').val();
$.ajax({
url: "postback.aspx",
data: {
ftn: 1,
val: device
},
success: function (data) {
var splitdata = data.split(";");
var number = $.trim(splitdata[0]);
var name = $.trim(splitdata[1]);
var model = $.trim(splitdata[2]);
$("#number").text(number);
$("#name").text(name);
$("#model").text(model);
}
});
}
postback.aspx.cs
C#
protected void Page_Load(object sender, EventArgs e)
{
String Function = Request.QueryString["ftn"];
switch (Function)
{
case "1":
Search();
break;
default:
break;
}
}
public void Search()
{
string value = Request.QueryString["val"];
string sqlstring = /*connection string here*/;
SqlConnection con = new SqlConnection(sqlstring);
con.Open();
string qry = /*stored procedure using value*/
SqlCommand cmd = new SqlCommand(qry, con);
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
string number = sdr.["devnumber"].ToString();
string name = sdr.["devname"].ToString();
string model = sdr.["devmodel"].ToString();
Response.Write(number);
Response.Write(";");
Response.Write(name);
Response.Write(";");
Response.Write(model);
}
}
con.Close();
}
我对 ASP.NET Core Razor 页面还很陌生,并且已经完成了 Microsoft 的文档化教程,但我只是在努力了解如何将其应用于转换我正在使用的当前应用程序。
Razor Pages 是迁移 Web 表单应用程序的绝佳选择,因为底层原理是相同的 - 它们都是以页面为中心的开发框架。而且 Razor Pages 的学习曲线比 MVC 低很多(这也是引入 Razor Pages 的主要原因)。
无论哪种方式,您显然都必须学习该框架,但是使用 Razor Pages,有一些一对一的映射可以帮助您:
PageModel
类文件映射到aspx.cs代码隐藏文件。两者都充当页面控制器的角色。Web 表单应用程序中的 Page_Load 请求处理方法已替换为 Razor Pages 中特定于 HTTP 方法的处理程序方法 -
OnGet
、OnPost
、OnDelete
等。
模型绑定到
PageModel
类上的公共属性取代了直接引用 Request
集合(Form
、QueryString
)的需要。