MVC控制器不控制视图

时间:2013-01-23 09:16:41

标签: asp.net asp.net-mvc-3 razor

我在我的视图中有一个按钮,就像这个

<form>
    <div class="field">
        <label for="product-name">Product Name</label><br />
        @Html.TextBoxFor(x=> x.Name, new {id="product-name",required="required"}) <br />
        <span class="helper">Give your product a name.</span>
        @ViewBag.mm
    </div>
    <div class="field">
        <label for="product-variety">Product Variety</label><br />
        <input id="product-variety" type="text" /><br />
        <span class="helper">Optionally, give your product a variety.</span>
    </div>
    <div class="field">
        <label for="product-description">Description</label><br />
        <input id="product-description" type="text" /><br />
        <span class="helper">Add an optional description to help identify your product.</span>
    </div>
    <div class="field">
        <label for="product-comments">Comments</label><br />
        <textarea id="product-comments"></textarea><br />
        <span class="helper">Add any further information or comments relating to this product.</span>
    </div>
    <input id="product-save-return" type="submit" value="Add Product and Return to Products" class="green-button" /> <input id="product-save-associate" type="button" value="Add Product and Associate with Sites" class="green-button" /> <input id="file-cancel" type="button" value="Cancel" class="green-button" />

在控制器中我有这样的功能

[HttpPost]
public ActionResult Add(Product product)
{
    SupplierContext db = new SupplierContext();
    Response.Write("Inside");
    ViewBag.mm = "xyz";
    if (ModelState.IsValid)
    {
        product.Key = Guid.NewGuid();
        product.Type = ProductType.Chemical;
        product.Status = EntityStatus.Default;
        db.Products.Add(product);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(product);
}

但是当我单击按钮时,控制器中的功能不起作用。

2 个答案:

答案 0 :(得分:1)

您的按钮是否在表单/操作中?在Razor中,它只是在以下语法中添加表单元素的情况:

@using (Html.BeginForm())
{
    <div class="field">
        <label for="product-name">Product Name</label><br />
        @Html.TextBoxFor(x=> x.Name, new {id="product-name",required="required"}) <br />
        <span class="helper">Give your product a name.</span>
        @ViewBag.mm
    </div>
    <div class="field">
        <label for="product-variety">Product Variety</label><br />
        <input id="product-variety" type="text" /><br />
        <span class="helper">Optionally, give your product a variety.</span>
    </div>
    <div class="field">
        <label for="product-description">Description</label><br />
        <input id="product-description" type="text" /><br />
        <span class="helper">Add an optional description to help identify your product.</span>
    </div>
    <div class="field">
        <label for="product-comments">Comments</label><br />
        <textarea id="product-comments"></textarea><br />
        <span class="helper">Add any further information or comments relating to this product.</span>
    </div>
    <input id="product-save-associate" type="button" value="Add Product and Associate with Sites" class="green-button" />  <input id="file-cancel" type="button" value="Cancel" class="green-button" />
   <input id="product-save-return" type="submit" value="Add Product and Return to Products" class="green-button" />
}

这可能就是它没有在控制器中启动功能的原因。您也可以使用AJAX帖子在javscript中执行此操作...

答案 1 :(得分:0)

您还可以使用ActionLink:

@Html.ActionLink("Add Product and Return to Products", "Add", "YourController")

虽然这将是一个链接,而不是一个按钮。