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