我正在进行测试mvc项目,因为这是我第一次在mvc环境中工作,我几乎迷失了,与asp.net网络表单相比完全不同。
我试图在表单上放置一个文本框和一个按钮,但是当我使用<%= Html.TextBox("name") %>
作为文本框时,代码在屏幕上显示为文本,而不是呈现为文本框。当我使用html标记文本框和按钮时,我可以看到文本框,但不应该<%= Html.TextBox("name") %>
是正确的方法吗?
这是我在这里的内容:
@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "Welcome to my Web Site!";
}
<p>
ASP.NET Web Pages make it easy to build powerful .NET based applications for the web.
Enter your name: <%= Html.TextBox("name") %>
<input id="Text1" type="text" />
<input id="Button1" type="button" value="button" />
</p>
我应该采用哪种方式,我可以使用标准的html格式,或者我错误地认为来自<%= Html.TextBox("name") %>
的文本框没有显示?
在此先感谢Laziale
答案 0 :(得分:4)
您使用的是ASPX语法。对于Razor来说,它会是这样的:
@Html.TextBox("TextBoxName")
所以你的代码看起来像是:
<p>
ASP.NET Web Pages make it easy to build powerful .NET based applications for the web.
Enter your name:
@Html.TextBox("name")
<input id="Button1" type="button" value="button" />
</p>
答案 1 :(得分:3)
除了之前的答案,如果您在View页面上引用了一个Model,那么您可以使用带有Lambda表达式的Razor HTML Helpers。
更新示例(此更新是对Laziale评论的回应):
在您的Models目录中,您有一个User类:
namespace MvcApplication.Models
{
public class User
{
public string Name { get; set; }
}
}
在Controllers目录中,您有一个UserController:
namespace MvcApplication.Controllers
{
public class UserController : Controller
{
//
// GET: /User/
public ActionResult Index()
{
return View();
}
}
}
在您的Views目录中,您有一个名为“User”的子目录,其中包含一个“Index.cshtml”文件:
@model MvcApplication.Models.User
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.Name)
<input type="submit" />
}
MVC / Razor将创建以下HTML:
<html>
<head>...</head>
<body>
<form action="/User" method="post">
<input id="Name" name="Name" type="text" value="" />
<input type="submit" />
</form>
</body>
</html>
答案 2 :(得分:0)
您使用Razor语法,该语法在开头用@表示:
@Html.TextBox("name")