标签: html.beginform

仅具有表单ID的Html.BeginForm()无法生成正确的操作网址

我只想在其中添加formId beginForm()

如果我尝试使用
Html.BeginForm(null, null, FormMethod.Post, new {@id="Id"})

那么生成的HTML是
<form action="/newquestion/payment/b9f88f80-f31f-4144-9066-55384c9f1cfc" ... >

我不知道该操作网址是如何生成的,所以我尝试了,
Html.BeginForm(new {@id="Id"})
但是操作网址看起来像这样
<form action="/newquestion/payment/Id... >

在这两种情况下,操作URL都不应该是正确的,并且也不会影响控制器的后期操作。

c# html.beginform asp.net-mvc-4

5
推荐指数
1
解决办法
1万
查看次数

为什么BeginForm("Foo")在查询字符串中添加"Length"键?

我不是MVC的新手,所以当我点击提交按钮时,为什么我无法更改POST的URL时,我感到有点困惑.

我有一个名为PandoraRemovalTool.cshtml的简单视图

@{
    ViewBag.Title = "PandoraRemovalTool";
}
@using (Html.BeginForm("PandoraGetDocsList"))
{
    <h2>Pandora Removal Tool</h2>    
    @Html.Label("Member number:")
    @Html.TextBox("txtMemberNumber")
    <br />
    <input type="submit" value="Search"/>
}
Run Code Online (Sandbox Code Playgroud)

由于它很简单,我没有使用模型,我只想POST txt值.但是URL有点奇怪.它指向网站中的这条路径:

<form action="/Administration/PandoraRemovalTool?Length=18" method="post" novalidate="novalidate">    
    <h2>Pandora Removal Tool</h2>
    <label for="Member_number:">Member number:</label>
    <input id="txtMemberNumber" name="txtMemberNumber" type="text" value=""/>        
    <br>
    <input type="submit" value="Search"/>
</form>
Run Code Online (Sandbox Code Playgroud)

我不明白从哪里得到长度= 18.我想发布到这个方法:

[HttpPost]
public ActionResult PandoraGetDocsList(string txtMemberNumber)
{
    return RedirectToAction("PandoraRemovalTotal2", new {MemberNum = txtMemberNumber });
}

public ActionResult PandoraRemovalTotal2(string MemberNum)
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

有些帮助吗?

post html.beginform asp.net-mvc-4

5
推荐指数
1
解决办法
1841
查看次数

Html.BeginForm multipart/form-data 文件上传表单组验证

我有一个 cshtml 文件用于将文件上传到服务器。

@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary();
    <div class="alert alert-success alert-dismissible" role="alert">@ViewBag.Message</div>

        <div class="form-horizontal">
        <h4>Upload Data Documents</h4>
        <hr />
        @Html.ValidationSummary(true)
        @Html.HiddenFor(model => model.project_id)

        <div class="form-group">
            <label class="control-label col-md-2">Some Other File</label>
            <div class="col-md-10">
                <input type="file" name="someOtherFile" class="form-control" />
                <span class="field-validation-error" id="spanfilesomeOtherFile"></span>
            </div>
        </div>
        <div class="form-group">
            <label class="control-label col-md-2">Results Comparison</label>
            <div class="col-md-10">
                <div class="form-group">
                    <div class="col-md-4">
                        <input type="file" name="FileUploadResultsComparison" class="form-control" placeholder=".col-md-4"/>
                        <span class="field-validation-error" id="spanfileResultsComparison"></span>
                    </div>
                    <div class="col-md-4">
                        @if (ViewData["Project"] != null)
                        { 
                            @Html.DropDownList("resultsComp_project", …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc file-upload multipartform-data html.beginform

5
推荐指数
1
解决办法
3万
查看次数

将列表作为 @Html.Hidden 传递并且列表将被删除

我在将列表从表单发送到控制器以进行使用和编辑时遇到问题。它只是破坏列表并仅传递一个空字符串。我需要维护该列表,以便我可以将其添加到控制器中。

\n\n

视图如下所示:

\n\n
@using (Html.BeginForm("AddToBasket", "Home", FormMethod.Post))\n        {\n            @Html.Hidden("product", product.Product)\n            @Html.Hidden("basketItems", Model.BasketItems)\n\n            <h3>@product.Product (\xc2\xa3@product.Price)</h3>\n            <div class="menu-item-quantity">\n                <h4>Quanitity: @Html.TextBox("quantity", 0, new { @class = "form-control-quantity" })</h4>\n            </div>\n            <input class="btn btn-lg" type="submit" value="Add to basket" />\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

控制器:

\n\n
public ActionResult AddToBasket(string product, int quantity, List<string>basketItems)\n        {   \n            var products = new GetProductsList<ProductLookup>().Query().ToList();\n\n            var Result = new BuyViewModel\n            {\n                Products = products,\n                BasketItems = basketItems.ToList()\n            };\n\n            return View("Buy", Result);\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

和型号:

\n\n
public class BuyViewModel\n    {\n        public IList<ProductLookup> Products …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc list hidden-field html.beginform

5
推荐指数
1
解决办法
8361
查看次数

使用Html.BeginForm的ASP.Net MVC路由问题

使用MVC,我在视图中有一个html表单助手:

using (Html.BeginForm("ActionOne", "ControllerOne")) ...
Run Code Online (Sandbox Code Playgroud)

使用默认路由,action属性的输出符合预期:

<form action="/ControllerOne/ActionOne" ...
Run Code Online (Sandbox Code Playgroud)

但注册一条似乎没有匹配的新路线会影响输出.

路由代码:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.Add("testRoute", new Route("MyUrl", new MvcRouteHandler()));

    routes.MapRoute("Default", "{controller}/{action}", new { controller = "Home", action = "Index"});
}
Run Code Online (Sandbox Code Playgroud)

输出:

<form action="/MyUrl?action=ActionOne&amp;controller=ControllerOne"
Run Code Online (Sandbox Code Playgroud)

这是设计还是我在做一些基本的东西?

干杯!

asp.net-mvc routing html.beginform

3
推荐指数
1
解决办法
8072
查看次数

MVC3 BeginForm 不呈现 &lt;form&gt; 标签

我的视图没有呈现打开和关闭 FORM 标签有问题。下面是我的控制器的代码

    [HttpGet, Authorize]
    public ActionResult Edit(long id)
    {
        Position position = positionRepository.GetPositionById(id);
        return View(position);
    }
Run Code Online (Sandbox Code Playgroud)

这是我认为的代码(省略控件代码)

@using (Html.BeginForm("Edit", "Position", new { area = "Stock", id = Model.PositionId }, FormMethod.Post, null)){}
Run Code Online (Sandbox Code Playgroud)

当页面被调用时,它会呈现适当的数据,但 HTML 端不包含打开和关闭 FORM 标记,这是保存修改所必需的。关于我可能缺少什么的任何线索?

在此处输入图片说明 在此处输入图片说明

html.beginform asp.net-mvc-3

3
推荐指数
1
解决办法
4748
查看次数

使用html.beginform在mvc3中发送模型

我有一个HttpPost和HttpGet版本的动作方法Rate():

http://pastebin.com/embed_js.php?i=6x0kTdK0

    public ActionResult Rate(User user, Classified classified)
    {
        var model = new RatingModel
                {
                    CurrentUser = user,
                    RatedClassified = classified,                        
                };
        return View(model);
    }
    [HttpPost]
    public ActionResult Rate(RatingModel model)
    {
        model.RatedClassified.AddRating(model.CurrentUser, model.Rating);
        return RedirectToAction("List");
    }
Run Code Online (Sandbox Code Playgroud)

HttpGet Rate()返回的视图:

@model WebUI.Models.RatingModel
@{
    ViewBag.Title = "Rate";
}
Rate @Model.RatedClassified.Title
@using(Html.BeginForm("Rate","Classified", FormMethod.Post))
{
    for (int i = 1; i < 6; i++)
    {
        Model.Rating = i;
        <input type="submit" value="@i" model="@Model"></input>
    }
} 
Run Code Online (Sandbox Code Playgroud)

我试图找出通过Form发送模型到Post方法,我的想法是提交按钮的标签中的值"模型"将是这样做的参数,但是如果我是null则通过Post方法中的断点.for循环试图创建5个按钮来发送正确的评级.

谢谢

c# html.beginform razor asp.net-mvc-3

3
推荐指数
1
解决办法
3万
查看次数

2
推荐指数
1
解决办法
1742
查看次数

使用Html.BeginForm和jQuery提交添加动态参数

// html
<% using (Html.BeginForm("MyAction", "MyController", 
                   new { id = ViewContext.RouteData.Values["id"] },
                   FormMethod.Post, 
                   new { enctype = "multipart/form-data", class="myForm" }))
 { %>
    <input type="file" name="blah" />
 <% } %>



// script
$container.find('.myButton').click(function() {
    $container.find('.myForm').submit();
});
Run Code Online (Sandbox Code Playgroud)

在提交表单之前,我需要添加一些额外的参数(路由值),这些参数只能在提交时计算.

我怎么做?

asp.net-mvc jquery form-submit routevalues html.beginform

2
推荐指数
1
解决办法
6886
查看次数

在ASP.NEt MVC 3中的Html.BeginForm()中传递DropDownList的SelectedValue

这是我的查看代码:

@using(Html.BeginForm(new { SelectedId = /*SelectedValue of DropDown*/ })) {

 <fieldset>

     <dl>
       <dt>
           @Html.Label(Model.Category)
       </dt>
       <dd>
        @Html.DropDownListFor(model => Model.Category, CategoryList)
       </dd>
    </dl>

 </fieldset>
 <input type="submit" value="Search" />


}
Run Code Online (Sandbox Code Playgroud)

如图所示,我需要将dropdown所选值传递给BeginForm()Html帮助器中的操作.你的建议是什么?

asp.net-mvc html-helper html.beginform razor asp.net-mvc-3

2
推荐指数
1
解决办法
2万
查看次数

尽管提交按钮,Html.BeginForm仍未发布到服务器

我有一个标准的表单,它被包装到一个Html.BeginForm中.在底部有一个提交按钮.

但是,当单击按钮时,我的控制器没有被击中.我遇到了页面的重新加载,但没有遇到任何代码.我已经尝试在控制器端进行调试并尝试我能看到的代码被击中,但它的定义并没有被击中.

Razor - /Views/BuyBitcoins/Index.cshtml下的Index.cshtml:

  @using (Html.BeginForm("BuyBitcoinsNow", "BuyBitcoins",FormMethod.Post))
            {


                <h3>@ModelRes.BuyBitcoinStrings.Form_YourPurchase</h3>
                <p>
                    @ModelRes.BuyBitcoinStrings.Form_HowMuch<br />
                    @Html.EditorFor(model => model.PurchaseViewModel.PurchaseAmount)
                </p>    


                <div id="plcBitcoinAddress">

                    <p>
                        @ModelRes.BuyBitcoinStrings.Form_EnterAddress<br />
                        @Html.EditorFor(model => model.PurchaseViewModel.BitcoinAddress)
                    </p>

                </div>

                <h3>@ModelRes.BuyBitcoinStrings.Form_Summary</h3>


                <h3>@ModelRes.BuyBitcoinStrings.Form_Personal_Headline</h3>
                <p>
                    @ModelRes.BuyBitcoinStrings.Form_Name:<br />
                    @Html.EditorFor(model => model.Name)
                </p>

                <p>
                    @ModelRes.BuyBitcoinStrings.Form_Email:<br />
                    @Html.EditorFor(model => model.Email)
                </p>

                <p>
                    @ModelRes.BuyBitcoinStrings.Form_Phone<br />
                    @Html.EditorFor(model => model.Phone)
                </p>


                <div id="plcTerms" class="checkbox">
                    <label for="termsChk">
                        <input id="termsChk" type="checkbox">
                        @ModelRes.BuyBitcoinStrings.Form_accept

                    </label>
                </div>
                <div id="newsletterTerms" class="checkbox">
                    <label for="newsletterChk">
                        <input id="newsletterChk" type="checkbox" checked="checked">
                        @ModelRes.BuyBitcoinStrings.Form_newsletter
                    </label>
                </div>


                <div id="usp_list">
                    <ul>
                        <li>
                            <img src="@Url.Content("~/Content/images/1387430978_checkmark-g.png")" style="width: …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc html.beginform razor

2
推荐指数
1
解决办法
8804
查看次数

如何使用Html.BeginForm()将QueryString值转换为RouteValueDictionary?

我发现Html.BeginForm()自动使用RawUrl(即QueryStringParamters)填充routeValueDictionary.但是我需要指定一个HtmlAttribute,所以我需要使用覆盖...

public static MvcForm BeginForm(this HtmlHelper htmlHelper, string actionName, string controllerName, FormMethod method, object htmlAttributes)
Run Code Online (Sandbox Code Playgroud)

当我这样做时,QueryString值不会自动添加到RouteValueDictionary中.我怎么能做到这一点?

这是我最好的尝试,但它似乎没有起作用.

    <% RouteValueDictionary routeValueDictionary = new RouteValueDictionary(ViewContext.RouteData.Values);
       foreach (string key in Request.QueryString.Keys )
       {
           routeValueDictionary[key] = Request.QueryString[key].ToString();
       }

       using (Html.BeginForm("Login", "Membership", routeValueDictionary, FormMethod.Post, new { @class = "signin-form" }))
       {%> ...
Run Code Online (Sandbox Code Playgroud)

我的控制器动作看起来像这样......

    [HttpPost]
    public ActionResult Login(Login member, string returnUrl)
    { ...
Run Code Online (Sandbox Code Playgroud)

但是,作为QueryString一部分的"returnUrl"的值总是为NULL,除非我在视图中使用默认的无参数Html.BeginForm().

谢谢,贾斯汀

asp.net-mvc html.beginform querystringparameter

1
推荐指数
1
解决办法
5977
查看次数