0

这是我的看法

<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();%>
4

2 回答 2

3

使用强类型视图。在您的 GET 操作方法中,将 ViewModel 的对象传递给视图并使用 HTML 帮助器方法来创建输入元素。当您提交表单时,由于 MVC 模型绑定,您将在POSTaction 方法中获取值作为 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);

}

假设您objCustomer.getData()在 GET Action 方法中的方法返回一个对象,CustomerViewModel 该对象具有这样的Name属性

public class CustomerViewModel
{
  public string Name { set;get;}
  //other properties as needed
}
于 2012-07-19T12:58:30.007 回答
0

您可以将参数添加到接受类型 CustomerModels 的对象的搜索操作。这样,当您将某些内容发布回控制器时,模型绑定器将从表单中获取数据并生成一个 CustomerModels 类型的对象,然后您可以在您的操作中使用该对象以进行处理。为此,您需要做两件事:

  1. 您的视图应该收到一个 CustomerModels 类型的模型
  2. 您的操作应该类似于这个 public ActionResult Search(CustomerModels model)

如果您不想更改视图,也就是说,您不想将模型传递给您的页面,您可以尝试在控制器中使用 TryUpdateModel,或者将 FormCollection 对象传递给您的 Search 操作,然后查询该集合。

于 2012-07-19T13:00:00.137 回答