这是我的观点
<form method="post" action="/LoadCustomerAndDisplay/Search">
<fieldset>
<legend>Customer Book</legend>
<%= Html.Label("Name") %>
<%: Html.TextBox("Name") %>
<br />
<br />
<div>
<input type="submit" value="Sign" />
</div>
</fieldset>
</form>
这是我的控制器...
public ActionResult Search()
{
CustomerModels objCustomer = new CustomerModels();
var dataval = objCustomer.getData();
return View(dataval);
}
如何在控制器中获取名称文本框的值,并将其传递给getData,就像这样......
var dataval = objCustomer.getData(ViewData['Name']);
这个我把...显示错误fname ....缺少添加指令....现在的问题是什么......
<% Html.BeginForm("Search", "LoadCustomerAndDisplay");%>
<%: Html.TextBoxFor(m => m.fname) %>
<p>
<button type="submit">
Save</button></p>
<% Html.EndForm();%>
答案 0 :(得分:3)
使用强类型视图。在GET操作方法中,将ViewModel的对象传递给视图,并使用HTML帮助器方法创建输入元素。当您提交表单时,由于MVC模型绑定,您将在POST
操作方法中将值作为ViewModel的属性值。
您的GET操作可以保持不变
public ActionResult Search()
{
CustomerModels objCustomer = new CustomerModels();
var dataval = objCustomer.getData();
// Assuming this method returns the CustomerViewModel object
//and we will pass that to the view.
return View(dataval);
}
所以你的视图就像
@model CustomerViewModel
@using (Html.BeginForm())
{
@Html.LabelFor(x=>x.Name)
@Html.TextBoxFor(x=>x.Name)
<input type="submit" value="Save" />
}
并拥有 POST 操作方法来处理此
[HttpPost]
public ActionResult Search(CustomerViewModel model)
{
if(ModelState.IsValid)
{
string name= model.Name;
// you may save and redirect here (PRG pattern)
}
return View(model);
}
假设您的GET Action方法中的objCustomer.getData()
方法返回CustomerViewModel
的对象,该对象具有Name
这样的属性
public class CustomerViewModel
{
public string Name { set;get;}
//other properties as needed
}
答案 1 :(得分:0)
您可以在Search操作中添加一个接受CustomerModel类型对象的参数。这样,当您将某些内容发布回控制器时,模型绑定器将从表单中获取数据并生成CustomerModels类型的对象,然后您可以在操作中使用该对象。为此你需要做两件事:
如果您不想更改视图,也就是说,您不希望将模型传递到您的页面,您可以尝试在控制器中使用TryUpdateModel,或者将FormCollection对象传递给Search操作,然后查询那个集合。