为什么我的按钮没有在控制器中调用动作?

时间:2017-10-26 19:05:02

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

我有EDITSTORIES部分视图,它必须将数据发布到Stories控制器中的UpdateStories操作,但事实并非如此。它甚至没有达到断点。

@using (Html.BeginForm("UpdateStories", "Stories", FormMethod.Post, new{enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Stories</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.ID)

        <div class="form-group">
            @Html.LabelFor(model => model.Image, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Image, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Image, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Story, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Story, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Story, "", new { @class = "text-danger" })
            </div>
        </div>


        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Update" class="btn btn-default" />
            </div>
        </div>
    </div>
}

动作:

   [HttpPost]
        public ActionResult UpdateStories(Stories st)
        {    
            ViewBag.Grid= bo.GetAllImages();

            if (bo.UpdateImages(st))
            {
                ViewBag.Data = "Updated successfully";
            }
            else 
            {
                ViewBag.Data = "Update failed";
            }

            ViewBag.Style = "display:none";    
            return View("GetStories", st);   
        }
    }

它在GetStories里面,这是主视图。这是漫长的一天,但仍然没有完成。请帮帮我。

更新

路线:

  routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Stories", action = "AddStories", id = UrlParameter.Optional }
            );
            routes.MapRoute(
                name: "ShowStories",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Stories", action = "ShowStories", id = UrlParameter.Optional }
            );

更新

查看:GetStories

@model HimHer.Models.Stories

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (@Html.BeginForm("GetStories", "Stories", FormMethod.Get))
{
        @Html.AntiForgeryToken()

    <div style="@ViewBag.Style">
        @{
            Html.RenderPartial("EditStories", Model);
        }


    </div>

    <hr />
    var listData = (List<HimHer.Models.Stories>)ViewBag.Grid;

    WebGrid wgImages = new WebGrid(listData, rowsPerPage: 20);
    @wgImages.GetHtml(tableStyle: "table table-condensed table-bordered table-striped table-responsive",
columns: wgImages.Columns(
                      wgImages.Column
                      (columnName: "Image", header: "Image"),
                      wgImages.Column
                      (columnName: "Story", header: "Story"),
                      wgImages.Column
                      (columnName: "Image", header: "Download", format: (testItem) => Html.ActionLink("Download", "DownloadStories", new { filename = testItem.Image })),
                      wgImages.Column
                                         (header: "Edit", format: (testitem) => Html.ActionLink("Edit", "EditStories", new { ID = testitem.ID, Story = testitem.Story, Image = testitem.Image, HiddenID = 1 }))
                     )
);



}

<h2>Index</h2>

1 个答案:

答案 0 :(得分:2)

您的代码将生成2个表单,它们是嵌套的!

s.ewm(alpha=0.3, adjust=True).mean()

嵌套表单无效!这就是为什么当您从局部视图中单击内部表单中的提交按钮时,它将提交给为外部表单定义的操作方法。

你不应该嵌套表格。因此,在<form action="/Stories/GetStories"> <form action="/Stories/UpdateStories"> <input type="submit" /> </form> </form> 来电之外移出对RenderPartial的调用。

查看您共享的代码,您无需在主视图中使用表单标记,因为您没有必须提交的任何表单数据。所以简单地删除它。

如果您绝对想要在主视图中使用其他表单,请确保它不会创建嵌套表单情况。您可以在同一视图中并行显示2个表单

BeginForm