ASP.NET 移动视图中的 FormCollection 为空
Posted
技术标签:
【中文标题】ASP.NET 移动视图中的 FormCollection 为空【英文标题】:FormCollection Empty in ASP.NET Mobile View 【发布时间】:2017-02-11 11:45:49 【问题描述】:当我将此代码用作 Web 视图时,它可以正常工作,但是当我在 Chrome 中使用开发人员选项时选择移动视图时,FormCollection 在控制器中显示空字符串
查看(编辑更新)
<div class="page product-details-page deal-product-details-page">
@using (html.BeginForm("AddProductToCart_Details", "DealProduct", new productId = Model.Id, shoppingCartTypeId = 1 , FormMethod.Post))
<div class="page-body">
@using (Html.BeginRouteForm("Product", new SeName = Model.SeName , FormMethod.Post, new id = "product-details-form" ))
@
var dataDictAttributes = new ViewDataDictionary();
dataDictAttributes.TemplateInfo.HtmlFieldPrefix = string.Format("attributes_0", Model.Id);
@Html.Partial("~/Views/Product/_ProductAttributes.cshtml", Model.ProductAttributes, dataDictAttributes)
<!--gift card-->
@
var dataDictGiftCard = new ViewDataDictionary();
dataDictGiftCard.TemplateInfo.HtmlFieldPrefix = string.Format("giftcard_0", Model.Id);
@Html.Partial("~/Views/Product/_GiftCardInfo.cshtml", Model.GiftCard, dataDictGiftCard)
<!--rental info-->
@
var dataDictRental = new ViewDataDictionary();
dataDictRental.TemplateInfo.HtmlFieldPrefix = string.Format("rental_0", Model.Id);
@Html.Partial("~/Views/Product/_RentalInfo.cshtml", Model, dataDictRental)
<!--price & add to cart-->
@
var dataDictPrice = new ViewDataDictionary();
dataDictPrice.TemplateInfo.HtmlFieldPrefix = string.Format("price_0", Model.Id);
@Html.Partial("~/Views/Product/_ProductPrice.cshtml", Model.ProductPrice, dataDictPrice)
@Html.Partial("~/Views/Product/_ProductTierPrices.cshtml", Model.TierPrices)
<!--wishlist, compare, email a friend-->
<!--attributes-->
@
var item = @Model.AssociateProductAttributesList.Where(x => x.Item1 == data.Id).Select(x => x.Item2).ToList()[0];
bool isAttributes =false;
<div class="popup" data-popup="popup-@data.Id">
<div class="popup-inner">
<h2>@data.Name</h2>
<p>@data.ShortDescription</p>
<br />
@foreach (System.Collections.DictionaryEntry value in item)
var val = data.Id + "_" + value.Key.ToString();
isAttributes = true;
@*<div class="attributes">*@
<dl>
<dt id="product_attribute_label_19">
<label class="text-prompt">
@value.Key.ToString()
</label>
</dt>
<dd id="product_attribute_input_19" class="product_attribute_inputdiv_@val">
@Html.DropDownList("Attributes," + data.Id + "," + value.Key.ToString(), new SelectList((System.Collections.IEnumerable)value.Value, "Id", "Name"), "--- Please select ---")
</dd>
</dl>
@*</div>*@
<br />
<div onclick="ImageBlur('div_@data.Id')" class="buttons" style="text-align:left;">
<input class="button-1" data-popup-close="popup-@data.Id" type="button" value="Add to back" />
</div>
<a class="popup-close" data-popup-close="popup-@data.Id" href="#">x</a>
</div>
</div>
@if (item.Count == 0)
@Html.Hidden("Attributes," + data.Id + ",", "0")
<div class="popup" data-popup="popup-@data.Id">
<div class="popup-inner">
<h2>@data.Name</h2>
<p>@data.ShortDescription</p>
<div onclick="ImageBlur('div_@data.Id')" class="buttons" style="text-align:left;">
<input class="button-1" data-popup-close="popup-@data.Id" type="button" value="Add to back" />
</div>
<a class="popup-close" data-popup-close="popup-@data.Id" href="#">x</a>
</div>
</div>
@if (isAttributes)
<a style="color: blue;" data-popup-open="popup-@data.Id" href="#">
<img id="imgdiv_@data.Id" src="~/Themes/Playground/Content/img/dealselectattribut.png" class="select-atr-img" style="width: 50%; margin-bottom: 10px;"/>
</a>
</div>
</div>
<div>
</div>
@
var dataDictAddToCart = new ViewDataDictionary();
dataDictAddToCart.TemplateInfo.HtmlFieldPrefix = string.Format("addtocart_0", Model.Id);
<div class="overview" style="width:100%; margin-left:auto">
@Html.Partial("~/Views/Product/_AddToCart.cshtml", Model.AddToCart, dataDictAddToCart)
</div>
</div>
</div>
</div>
控制器
public ActionResult AddProductToCart_Details(int productId, int shoppingCartTypeId, FormCollection form)
if (_productService.IsDealProducts(productId))
if (!IsCompleteSelected(form))
return Json(new
success = false,
message = " Plese select all associated product attribute "
);
//more code here
普通视图(Web 视图)
移动端视图
【问题讨论】:
没有足够的信息来复制问题。您能否创建一个包含最少视图和控制器的新项目,以便我们复制它? 这是我第一次听到这样的问题。您可以发布完整的表单 HTML 代码 它很长...让我最小化它 我看到的是双重的还是你真的有一个表格在另一个表格里面?您知道 HTML 不允许这样做:***.com/a/555970/809357 正如@trailmax 所建议的那样-您在表单中嵌套了表单-或者在mvc术语中@using(Html.BeginForm... 在另一个@using(Html.BeginForm.. 块中),首先修复为有效html,然后如果您仍有问题,请更新问题(我怀疑您会:))。 【参考方案1】:表格中的表格是不允许的。这是你的问题。
【讨论】:
但它在 webview 中工作正常,如果它是问题,它应该在甚至 web 中响应以上是关于ASP.NET 移动视图中的 FormCollection 为空的主要内容,如果未能解决你的问题,请参考以下文章
我如何检测请求是不是来自我的 asp.net MVC 3 中的移动浏览器
[转]在 ASP.NET MVC 4 中创建为移动设备优化的视图