0

我正在学习 MVC,遵循教程。(链接将直接带您到我卡住的地方)。到目前为止,我已经了解到,每个视图都有一个控制器。现在我必须通过教程中提到的网络输入表单从用户那里获取输入。在我的项目中,我有一个名为Default1的控制器,我可以将它作为 localhost:xyz/Default1/Index 运行。它运行完美。

然后我创建了一个新的控制器,命名为Default2并将它绑定到一些视图以显示一些数据,它完美地作为 localhost:xyz/Default2/Displaycustomer。客户信息是静态的(硬编码)。控制器如下:

    public ViewResult DisplayCustomers()
    {
        Customer cobj = new Customer();
        cobj.Code = "12";
        cobj.Name = "Zeeshan";
        cobj.Amount = 7000;


        return View("DisplayCustomers",cobj);
    }

现在我必须使用教程中提到的html页面从用户那里获取关于客户信息的输入。所以我尝试在视图文件夹下添加一个新的网络表单,并将我的控制器修改为:

[HttpPost]
    public ViewResult DisplayCustomers()
    {
        Customer cobj = new Customer();

        cobj.Code = Request.Form["Id"].ToString();
        cobj.Name = Request.Form["Name"].ToString();
        cobj.Amount = Convert.ToDouble(Request.Form["Amount"].ToString());

        return View("DisplayCustomers",cobj);
    }

我的问题是:我怎样才能让我的项目盯着看,以便它首先接受输入,然后使用上面的控制器显示它?我是否在正确的位置添加了网络表单?运行它的链接是什么?我尝试了 localhost:xyz/Default2/entryform 等但失败了。(在我的 entryform.aspx 中,我提到了表单action="DisplayCustomer"

4

2 回答 2

1

听起来您缺少的是仅显示表单的操作。换句话说,您只需要一个动作来显示一个表单。该表单的 POST 操作应该引用您的控制器的DisplayCustomers操作。

所以在你的控制器代码中:

public class CustomerController : Controller 
{
    [HttpGet]
    public ViewResult New()
    {
       return View("NewCustomer");  //Our view that contains the new customer form.
    }

    // Add your code for displaying customers below
}

在你看来,你有这样的代码

@using(Html.BeginForm("DisplayCustomers", "Customer")) {
    <!-- Add your form controls here -->
}

请注意,我使用的是指定要调用的操作方法和控制器的 BeginForm 帮助器版本。这将写入form标签以发回您的DisplayCustomers操作。这是等效的 HTML:

<form method="POST" action="/Customer/DisplayCustomers">

然后,您将使用 URL http://test.server/Customer/New访问您的表单。

于 2013-10-04T13:55:23.877 回答
0

这可能不是世界上最好的例子......但这至少会让你滚动......

网址将是:localhost:1234/Home/Customer

控制器

public ActionResult Customer()
    {
        return View();
    }
    [HttpPost]
    public ActionResult Customer(FormCollection frm)
    {

        var name = frm["name"].ToString();
        var address = frm["address"].ToString();

        ViewBag.Name = name;
        ViewBag.Address = address;

        return View();
    }

风景

<div>
    @using (Html.BeginForm())
    {
        <input type="text" name="name" id="name" />
        <input type="text" name="address" id="address"/>

        <input type="submit" name="submit" value="submit" />

         <input type="text" name="namedisplay" value='@ViewBag.Name'/>
        <input type="text" name="addressdisplay"  value='@ViewBag.Address'/>

    }
</div>
于 2013-10-04T13:37:25.233 回答