在MVC Razor应用程序中放置文本框和按钮

3

我正在开发一个测试mvc项目,由于这是我第一次在mvc环境下工作,我感到非常迷茫,与asp.net Web Forms相比完全不同。我试图在表单上放置一个文本框和一个按钮,但当我使用<%= 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个回答

6
您正在使用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> 

如果我想在文本框旁边使用一个按钮,我需要使用哪种 Razor 语法?谢谢。 - Laziale
@Laziale,没有HtmlHelper方法可以用于按钮。通常,您只需使用按钮的HTML标记即可。您始终可以创建自定义的HtmlHelper扩展类来为您生成按钮。但是没有现成的解决方案。 - user596075

3
除了之前的答案,如果你在View页面引用一个Model,那么你可以使用带有Lambda表达式的Razor HTML辅助函数。
更新示例(这个更新是为了回应Laziale的评论):
在你的Models目录中,有一个名为User的类:
namespace MvcApplication.Models
{
    public class User
    {
        public string Name { get; set; }
    }
}

在您的控制器目录中,有一个名为UserController的控制器:
namespace MvcApplication.Controllers
{
    public class UserController : Controller
    {
        //
        // GET: /User/

        public ActionResult Index()
        {
            return View();
        }

    }
}

在您的视图目录中,有一个名为“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>

感谢您的评论,我想知道您从哪里获取了MvcApplication命名空间,因为当我编写那行代码时,我会收到一个错误,即名称“MvcApplication”在当前上下文中不存在。谢谢。 - Laziale
我使用的“MvcApplication”命名空间是我为示例选择的任意名称。在您的情况下,您将使用您的类所在的命名空间 - 我会更新我的原始帖子以进行澄清。 - Jed

0
你使用“@”符号来表示Razor语法:
 @Html.TextBox("name")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接