C# 获取提交MVC 3时的输入值

C# 获取提交MVC 3时的输入值,c#,asp.net-mvc,asp.net-mvc-3,forms,razor,C#,Asp.net Mvc,Asp.net Mvc 3,Forms,Razor,我已经设置了默认的MVC 3应用程序,而且我是新手,但是当我在单击submit按钮后试图从输入字段打印值时,我遇到了一个问题 这是一个简单的注册表,底部有一个提交按钮。当我点击submit按钮时,除了其中一个输入字段的文本将打印到标签或submit按钮下方的其他内容外,不会发生任何事情。我完全不知道该怎么做,我试着制作一个带有id的标签,但我无法访问输入字段值或标签 控制器操作如下所示: [HttpPost] public ActionResult Create(Person p

我已经设置了默认的MVC 3应用程序,而且我是新手,但是当我在单击submit按钮后试图从输入字段打印值时,我遇到了一个问题

这是一个简单的注册表,底部有一个提交按钮。当我点击submit按钮时,除了其中一个输入字段的文本将打印到标签或submit按钮下方的其他内容外,不会发生任何事情。我完全不知道该怎么做,我试着制作一个带有id的标签,但我无法访问输入字段值或标签

控制器操作如下所示:

[HttpPost]
        public ActionResult Create(Person person)
        {
            if (ModelState.IsValid)
            {
                db.Persons.Add(person);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }

            return View(person);
        } 
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>

        <div class="editor-label">
            @Html.LabelFor(model => model.Firstname)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Firstname)
            @Html.ValidationMessageFor(model => model.Firstname)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Lastname)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Lastname)
            @Html.ValidationMessageFor(model => model.Lastname)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Email)
            @Html.ValidationMessageFor(model => model.Email)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Phone)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Phone)
            @Html.ValidationMessageFor(model => model.Phone)
        </div>
        <p>
            <button id="btn_Register">
                <span class="ui-button-text">Register</span>
            </button>
        </p>               
    </fieldset>
 }
完整的表单如下所示:

[HttpPost]
        public ActionResult Create(Person person)
        {
            if (ModelState.IsValid)
            {
                db.Persons.Add(person);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }

            return View(person);
        } 
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>

        <div class="editor-label">
            @Html.LabelFor(model => model.Firstname)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Firstname)
            @Html.ValidationMessageFor(model => model.Firstname)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Lastname)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Lastname)
            @Html.ValidationMessageFor(model => model.Lastname)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Email)
            @Html.ValidationMessageFor(model => model.Email)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Phone)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Phone)
            @Html.ValidationMessageFor(model => model.Phone)
        </div>
        <p>
            <button id="btn_Register">
                <span class="ui-button-text">Register</span>
            </button>
        </p>               
    </fieldset>
 }
@使用(Html.BeginForm())
{
@Html.ValidationSummary(true)
@LabelFor(model=>model.Firstname)
@EditorFor(model=>model.Firstname)
@Html.ValidationMessageFor(model=>model.Firstname)
@LabelFor(model=>model.Lastname)
@EditorFor(model=>model.Lastname)
@Html.ValidationMessageFor(model=>model.Lastname)
@LabelFor(model=>model.Email)
@EditorFor(model=>model.Email)
@Html.ValidationMessageFor(model=>model.Email)
@LabelFor(model=>model.Phone)
@EditorFor(model=>model.Phone)
@Html.ValidationMessageFor(model=>model.Phone)

登记

}
为了从发布的表单中获取所有值,它们(在您的示例中)将位于
person
对象中

要在标签中输出值,需要使用新值修改
person
对象,然后在视图上输出该值

e、 g

person.labelvalue=“foo”;
@model.labelvalue

我建议您在从asp.net移动到asp.net mvc之前,先查看一下作为起点,您可以在按钮提交时转到控制器,获取输入字段值并在视图中将其设置为您想要的标签。但是,如果只是在单击按钮时设置标签文本,则不需要任何服务器端代码,也就是说MVC代码。只需使用简单的按钮,而不是提交按钮。为按钮单击编写JavaScript/jQuery事件/函数,并从所需输入字段设置标签文本。类似于

$("#fooLabel").text($("#fooTextEditor").val());
为此,您必须知道这两个控件的ID。由于没有内置重载,无法使用@Html.EditorFor或@Html.LabelFor为字段提供Id,因此您可以像本文中建议的那样覆盖HtmlHelper。。


更简单的是,您可以使用任何浏览器开发工具来查找两个控件的生成Id,并直接在JaveScript/jQuery中使用它们。通常它与模型字段名相同。

由于您不想提交页面或任何其他操作,因此必须使用java脚本或Jquery在客户端执行此操作。在java脚本中,只需将onclick事件添加到
btn\u Register
按钮,并将label的值设置为文本字段。如果在单击事件中使用jquery,请按如下所示分配值

btn_Register.click(function(){
    $("#label1").text($('txtfield1').val());
});

您的
控制器
操作
看起来像什么?表单的其余部分看起来像什么?MVC与asp.net完全不同。当你说“既不访问输入字段值也不访问标签”时,你希望在代码中能做到这一点吗?@Tim:不希望,但我是MVC的新手,所以不确定如何从输入字段中获取值并将该值放入新标签,仅此而已。你也可以使用
ViewBag
ViewData
TempData
用于不属于模型的值。是的,这些也是一个选项。您可以将属性名称作为每个控件的ID获取。对于属性,模型的FirstName将是id FirstName。因此,$(“#FirstName”).val()应该足够从jquery使用中获取。