Razor MVC4 和 C# 代码隐藏
本文关键字:代码 隐藏 MVC4 Razor | 更新日期: 2023-09-27 18:30:26
好的,所以我刚刚开始使用 razor mvc4,我对 c# 有一点经验。我目前正在制作一个有一个按钮的网站。我的 HTML 如下:
<button onclick ="vote1_click" id="VoteButton" value="Vote">Vote</button>
这是在 .cshtml 视图中
然后,我有一个类来处理vote1_click事件。它位于 c# 中,如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplication1
{
public class voting
{
public void vote1_click(object sender, EventArgs e)
{
}
}
}
我相信我的问题是对剃刀结构的基本理解,但我自己无法弄清楚。
任何帮助都是值得赞赏的,当答案很简单时,我会尽量不要觉得太愚蠢。
谢谢!
编辑:
我遇到了一个问题,其中 Add(字符串名称)给我一个错误"并非所有代码路径都返回值"
这是我要求的其余代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.SqlClient;
namespace WAgermanClub.Controllers
{
public class HomeController : Controller
{
[HttpPost]
public ActionResult Add(string vote)
{
SqlConnection vote1connection = new SqlConnection("user id=userid;" +
"password=validpassword;server=o5z5dpwpzi.database.windows.net;" +
"Trusted_Connection=yes;" +
"database=wagermanclub_votes; " +
"connection timeout=30");
try
{
vote1connection.Open();
}
catch (Exception g)
{
Console.WriteLine(g.ToString());
}
try
{
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select * from table", vote1connection);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.WriteLine(myReader["Vote1"].ToString());
}
}
catch (Exception i)
{
Console.WriteLine(i.ToString());
}
SqlCommand vote1command = new SqlCommand("INSERT INTO table (Column1, Vote1) " +
"Values (1, 'Vote1' + 1)", vote1connection);
vote1command.ExecuteNonQuery();
try
{
vote1connection.Close();
}
catch (Exception h)
{
Console.WriteLine(h.ToString());
}
}
}
}
这是我的 HTML:
@{
ViewBag.Title = "Ideas";
}
@section featured {
<section class="featured">
<div class="content-wrapper">
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
<h2>@ViewBag.Message</h2>
</hgroup>
<p>
</p>
</div>
</section>
}
<body>
<div style="border: solid; max-width: 300px; margin-left: auto; margin-right: auto">
@using(Html.BeginForm())
{
<input type="submit" value="Vote"/>
}
</div>
</body>
谢谢!
你对 ASP.NET 网络表单和MVC感到困惑。MVC更多地以经典的Web(GET-POST形式)风格工作。您发布带有值的表单。代码隐藏中没有像 Web 窗体中那样的此类单击事件和事件处理程序。
因此,要呈现您的页面,您的家庭控制器中可能有这样的操作方法
public class HomeController : Controller
{
public ActionResult Add()
{
return View();
}
}
因此,在添加视图(剃须刀文件)中,您需要一些代码来呈现带有输入元素的表单标记。让我们使用 Html.Begin
表单帮助程序方法来为我们呈现表单标记。
@using(Html.Beginform())
{
<input type="text" name="name" />
<input type="submit" />
}
这将在标记中呈现一个 form
标记,其中操作属性设置为"Home/Add
",假设您的 GET 操作方法在 HomeController 中。(查看页面的查看源码)
因此,当用户单击提交按钮时,它会将表单发布到Add
操作中。 因此,请确保在HomeController中具有这样的操作方法来处理表单发布。(用HttpPost
属性装饰的那个
[HttpPost]
public ActionResult Add(string name)
{
//do something with the posted values
return RedirectToAction("Success"); // redirecting to another view
}
网络表单模型与 asp.net mvc 模型混淆。
Razor 仅在使用网页或 MVC 时可用 asp.net。
对于 asp.net mvc,没有您在此处定义的服务器方法/事件的概念。
通常需要在控制器中定义操作方法,这些控制器将负责处理要发布的任何形式。
您可能想查看有关 ASP.NET MVC 的更多信息
MVC 不实现 Web 窗体样式视图状态和事件处理程序。 所以没有vote1_click。 你想做的是要么
1) 创建一个 JavaScript 帖子/返回服务器
或
2)有一个表单并将所有表单变量回发到服务器
这是开始MVC的一个很好的例子:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4