如何在 ASP.NET MVC 中将数据从 Controller 传递到 WebForm?
How to pass data from Controller to WebForm in ASP.NET MVC?
我正在尝试学习 ASP.NET MVC 和 ADO.NET。我正在制作一个演示网站,其中会有一个管理面板。管理员将更新每日消息,这将反映在主页中。我正在使用 ASP.NET MVC。我在数据库中创建了 table 作为
create table DailyMsg
(
Sno int primary key,
msg varchar(max)
);
这是我的日常访问层
public class DailyMsgs
{
static string connectionString = @"data source = DELL\SQLEXPRESS01;initial catalog = amen; persist security info=True;Integrated Security = SSPI;";
SqlConnection con = new SqlConnection(connectionString);
DailyMsg dm = new DailyMsg();
public string ViewDailyMessage()
{
SqlCommand com = new SqlCommand("sp_viewDsilyMSg", con);
com.CommandType = CommandType.StoredProcedure;
con.Open();
string simpleValue = com.ExecuteScalar().ToString();
con.Close();
return simpleValue;
}
}
我的模型class:
public partial class DailyMsg
{
public int Sno { get; set; }
public string msg { get; set; }
}
现在卡在这一步了。我不知道如何将这个返回值 simpleValue
放到我视图的 <h2>
标签中。
我的控制器
DailyMsgs dailyMsgs = new DailyMsgs();
private amenEntities db = new amenEntities();
// GET: DailyMsgs
public ActionResult Index()
{
return View();
}
我的主页:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
不要将 Web 表单与 MVC 一起使用,而是使用视图。
在 Views/Home
目录中创建名为 Index.cshtml
的视图。或者使用简单的方法 - 只需右键单击控制器中的 Index()
操作和 select Add View...
在索引视图的顶部添加
@model @<YourProjectName>.<Models>.DailyMsg
并将<YourProjectName>.<Models>
替换为DailyMsg
class所在的实际命名空间
目前,dailyMsgs.ViewDailyMessage()
return是一个字符串。您需要将其转换为您的模型:
// GET: DailyMsgs
public ActionResult Index()
{
DailyMsg dailyMsg = new DailyMsg();
// here I'm assuming your stored proc returns the daily message without the id
// you should update ViewDailyMessage() to return a DailyMsg
dailyMsg.msg = dailyMsgs.ViewDailyMessage();
return View(dailyMsg);
}
添加html:
<div>
@Model.msg
</div>
文本应显示在 div
内。
理想情况下,您应该将数据层中的 ViewDailyMessage()
更新为 return 您的 DailyMsg
模型而不是字符串。
此外,请考虑重命名您的 classes 和方法,因为它们目前命名不当且令人困惑。您的数据层 DailyMsgs
和模型 DailyMsg
具有非常相似的名称并且执行完全不同的功能。
给他们起个合适的名字。我建议重命名如下:
// data layer
// DailyMsgs (rename) -> MessageDataProvider
public class MessageDataProvider
{
// rename ViewDailyMessage -> GetDailyMessage
public DailyMessageModel GetDailyMessage()
{
}
}
// model
// DailyMsg (rename) -> DailyMessageModel
public partial class DailyMessageModel
{
}
这样从名字就可以看出每个class的职责(一个是数据层,一个是模型)
我正在尝试学习 ASP.NET MVC 和 ADO.NET。我正在制作一个演示网站,其中会有一个管理面板。管理员将更新每日消息,这将反映在主页中。我正在使用 ASP.NET MVC。我在数据库中创建了 table 作为
create table DailyMsg
(
Sno int primary key,
msg varchar(max)
);
这是我的日常访问层
public class DailyMsgs
{
static string connectionString = @"data source = DELL\SQLEXPRESS01;initial catalog = amen; persist security info=True;Integrated Security = SSPI;";
SqlConnection con = new SqlConnection(connectionString);
DailyMsg dm = new DailyMsg();
public string ViewDailyMessage()
{
SqlCommand com = new SqlCommand("sp_viewDsilyMSg", con);
com.CommandType = CommandType.StoredProcedure;
con.Open();
string simpleValue = com.ExecuteScalar().ToString();
con.Close();
return simpleValue;
}
}
我的模型class:
public partial class DailyMsg
{
public int Sno { get; set; }
public string msg { get; set; }
}
现在卡在这一步了。我不知道如何将这个返回值 simpleValue
放到我视图的 <h2>
标签中。
我的控制器
DailyMsgs dailyMsgs = new DailyMsgs();
private amenEntities db = new amenEntities();
// GET: DailyMsgs
public ActionResult Index()
{
return View();
}
我的主页:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
不要将 Web 表单与 MVC 一起使用,而是使用视图。
在
Views/Home
目录中创建名为Index.cshtml
的视图。或者使用简单的方法 - 只需右键单击控制器中的Index()
操作和 selectAdd View...
在索引视图的顶部添加
@model @<YourProjectName>.<Models>.DailyMsg
并将
<YourProjectName>.<Models>
替换为DailyMsg
class所在的实际命名空间目前,
dailyMsgs.ViewDailyMessage()
return是一个字符串。您需要将其转换为您的模型:// GET: DailyMsgs public ActionResult Index() { DailyMsg dailyMsg = new DailyMsg(); // here I'm assuming your stored proc returns the daily message without the id // you should update ViewDailyMessage() to return a DailyMsg dailyMsg.msg = dailyMsgs.ViewDailyMessage(); return View(dailyMsg); }
添加html:
<div> @Model.msg </div>
文本应显示在 div
内。
理想情况下,您应该将数据层中的 ViewDailyMessage()
更新为 return 您的 DailyMsg
模型而不是字符串。
此外,请考虑重命名您的 classes 和方法,因为它们目前命名不当且令人困惑。您的数据层 DailyMsgs
和模型 DailyMsg
具有非常相似的名称并且执行完全不同的功能。
给他们起个合适的名字。我建议重命名如下:
// data layer
// DailyMsgs (rename) -> MessageDataProvider
public class MessageDataProvider
{
// rename ViewDailyMessage -> GetDailyMessage
public DailyMessageModel GetDailyMessage()
{
}
}
// model
// DailyMsg (rename) -> DailyMessageModel
public partial class DailyMessageModel
{
}
这样从名字就可以看出每个class的职责(一个是数据层,一个是模型)