把文本框和按钮放在mvc razor应用程序中

时间:2012-01-25 15:10:35

标签: asp.net asp.net-mvc-3 razor

我正在进行测试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

3 个答案:

答案 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")