获取提交MVC 3的输入值

时间:2011-08-15 12:20:51

标签: c# asp.net-mvc asp.net-mvc-3 forms razor

我已经设置了默认的MVC 3应用程序并且我是新手,但是当我在单击提交按钮后尝试从输入字段打印值时,我遇到了问题。 / p>

这是一个简单的注册表单,底部有一个提交按钮。当我单击提交按钮时,不会发生任何事情,期望来自其中一个输入字段的文本应打印到提交按钮下方的标签或某些内容。我完全迷失了如何做到这一点,我试图制作一个带有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>
 }

3 个答案:

答案 0 :(得分:0)

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

要在标签中输出值,您需要使用新值修改person对象,然后在View输出中修改此值。

e.g。

person.labelvalue = "foo";

<span>@model.labelvalue</span>

我建议您在从asp.net转到asp.net mvc之前先看一下asp.net/mvc作为起始基地

答案 1 :(得分:0)

您可以在按钮提交时转到控制器,获取输入字段值并将其设置在视图上以指定您想要的标签。但是,如果只是单击按钮设置标签文本,那么您不需要任何服务器端代码,所以说MVC代码。只需使用简单的按钮而不是提交按钮。编写用于按钮单击的JavaScript / jQuery事件/函数,并从所需的输入字段设置标签文本。有点像...

$("#fooLabel").text($("#fooTextEditor").val());

要做到这一点,你必须知道这两个控件的ID。由于没有使用@ Html.EditorFor或@ Html.LabelFor为字段提供Id的内置重载,您可以像本帖中所建议的那样覆盖HtmlHelper。 How to specify ID for an Html.LabelFor<> (MVC Razor)

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

答案 2 :(得分:0)

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

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