Asp.net mvc 4 MVC:将值从文本框传递到控制器操作
我是MVC新手。基本上,我需要将文本框中输入的值从我的视图传递给控制器操作方法。当我在文本框中输入值并单击enter按钮时,我需要在屏幕上显示值。我目前无法这样做。请在下面找到我的代码 模范班Asp.net mvc 4 MVC:将值从文本框传递到控制器操作,asp.net-mvc-4,Asp.net Mvc 4,我是MVC新手。基本上,我需要将文本框中输入的值从我的视图传递给控制器操作方法。当我在文本框中输入值并单击enter按钮时,我需要在屏幕上显示值。我目前无法这样做。请在下面找到我的代码 模范班 public class ProteinTrackingService { public int? Total { get; set; } public int Goal { get; set; } public void AddProtein(
public class ProteinTrackingService
{
public int? Total { get; set; }
public int Goal { get; set; }
public void AddProtein(int? amount)
{
Total += amount;
}
}
控制器类
public class ProteinTrackerController : Controller
{
ProteinTrackingService proteinTrackingService = new ProteinTrackingService();
// GET: ProteinTracker
public ActionResult Index()
{
ViewBag.Total = proteinTrackingService.Total;
ViewBag.Goal = proteinTrackingService.Goal;
return View();
}
// GET: ProteinTracker/Details/5
public ActionResult AddProtein(ProteinTrackingService model)
{
proteinTrackingService.AddProtein(model.Total);
ViewBag.Total = proteinTrackingService.Total;
ViewBag.Goal = proteinTrackingService.Goal;
return View("Index");
}
}
景色
using (Html.BeginForm("ProteinTracker", "AddProtein",FormMethod.Post))
{
@Html.AntiForgeryToken()
<form>
<div class="form-horizontal">
<h4>Protein Tracker</h4>
<hr />
Total : @ViewBag.Total
Goal : @ViewBag.Goal
<input id="Text1" type="text" value="TextInput" /> <input type="Submit" value="Add" />
</div>
</form>
}
}首先,请使用此语法
using (Html.BeginForm("ProteinTracker", "AddProtein", FormMethod.Post))
当html生成时,已经创建了一个表单标记。无需在其中再次创建from标记
因此,出于您的需要,在视图中,您需要为输入字段指定一个名称
<input id="Text1" type="text" value="TextInput" name="textname"/>
它将把您的文本字段值从视图传递到控制器。为了澄清您的概念,您可以访问您需要将
HttpPost
属性添加到您的操作中。查看您的表单@使用(Html.BeginForm(“AddProtein”、“proteinker”、FormMethod.Post))
,显然您正在向控制器发送Post
请求
[HttpPost]
public ActionResult AddProtein(ProteinTrackingService model)
{
proteinTrackingService.AddProtein(model.Total);
model.Total = proteinTrackingService.Total;
model.Goal = proteinTrackingService.Goal;
return View("Index",model);
}
不要使用
ViewBag
将值传递给视图-初始化模型并设置其属性,然后将模型传递给视图。在视图中,使用@Html.TextBoxFor(m=>m.Total)
等绑定到您的模型。您的手动Html甚至没有name属性,因此不会提交任何内容。建议您访问MVC站点,通过教程了解基本内容。您也有无效的html(嵌套表单)-删除内部的
标记。如何初始化模型并将其传递给视图。我是否需要在index方法var model=new proteInKingService(){Total=x,Goal=y}中执行此操作;返回视图(模型)代码>您好,我已经修改了上面的代码,在视图中显示值时遇到问题。您好,我不明白为什么您需要提供textname作为AddProtein方法的参数。我认为模型将包含该值。如何在视图中初始化模型修改完成任务后确定。要在索引页中初始化模型,必须在视图中将模型引用设置为“@model yourprojectsolution.proteInKingService”,然后在要显示数据的位置添加@Html.Raw(model.Total)以显示模型数据
<input id="Text1" type="text" value="TextInput" name="textname"/>
public ActionResult AddProtein(ProteinTrackingService model,string textname)
{
// your code
return View("Index");
}
[HttpPost]
public ActionResult AddProtein(ProteinTrackingService model)
{
proteinTrackingService.AddProtein(model.Total);
model.Total = proteinTrackingService.Total;
model.Goal = proteinTrackingService.Goal;
return View("Index",model);
}