我只想在其中添加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都不应该是正确的,并且也不会影响控制器的后期操作。
我不是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)
有些帮助吗?
我有一个 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
我在将列表从表单发送到控制器以进行使用和编辑时遇到问题。它只是破坏列表并仅传递一个空字符串。我需要维护该列表,以便我可以将其添加到控制器中。
\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 }\nRun Code Online (Sandbox Code Playgroud)\n\n控制器:
\n\npublic 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 }\nRun Code Online (Sandbox Code Playgroud)\n\n和型号:
\n\npublic class BuyViewModel\n {\n public IList<ProductLookup> Products …Run Code Online (Sandbox Code Playgroud) 使用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&controller=ControllerOne"
Run Code Online (Sandbox Code Playgroud)
这是设计还是我在做一些基本的东西?
干杯!
我的视图没有呈现打开和关闭 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 标记,这是保存修改所必需的。关于我可能缺少什么的任何线索?

我有一个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个按钮来发送正确的评级.
谢谢
// 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)
在提交表单之前,我需要添加一些额外的参数(路由值),这些参数只能在提交时计算.
我怎么做?
这是我的查看代码:
@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帮助器中的操作.你的建议是什么?
我有一个标准的表单,它被包装到一个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) 我发现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().
谢谢,贾斯汀
html.beginform ×12
asp.net-mvc ×8
c# ×3
razor ×3
asp.net ×1
file-upload ×1
form-submit ×1
hidden-field ×1
html-helper ×1
jquery ×1
list ×1
post ×1
routevalues ×1
routing ×1
validation ×1