在本文中,您将会了解到关于razor–使用ActionLink将null参数传递给控制器的新资讯,同时我们还将为您解释javanull作为参数传递的相关在本文中,我们将带你探索razor–使用Acti
在本文中,您将会了解到关于razor – 使用ActionLink将null参数传递给控制器的新资讯,同时我们还将为您解释java null作为参数传递的相关在本文中,我们将带你探索razor – 使用ActionLink将null参数传递给控制器的奥秘,分析java null作为参数传递的特点,并给出一些关于AngularJS将指令模板中的参数传递给控制器、ASP.NET List
- razor – 使用ActionLink将null参数传递给控制器(java null作为参数传递)
- AngularJS将指令模板中的参数传递给控制器
- ASP.NET List
将null传递给控制器 - ASP.NET MVC null模型传递给控制器动作
- ASP.NET Razor 中的 HTML.ActionLink 与 Url.Action
razor – 使用ActionLink将null参数传递给控制器(java null作为参数传递)
<ul> <li>@Html.ActionLink("All","Index","Products")</li> @foreach (var item in Model.ProductCategories) { <li>@Html.ActionLink(item.Name,new { id = item.Id },null)</li> } </ul>
如图所示,我应该得到一个类别链接列表,最上面的一个是“All”,下面的是相应的类别名称,id传递给控制器.
我的控制器看起来像这样:
public ActionResult Index(int? id) { var categories = _productCategoryRepository.GetAll().OrderByDescending(f => f.Name); var items = id == null ? _productItemRepository.GetAll().OrderBy(f => f.Name).ToList() : _productCategoryRepository.GetSingle((int)id).ProductItems.OrderBy(f => f.Name).ToList(); var model = new Productsviewmodel() { ProductCategories = categories,ProductItems = items }; return View(model); }
所以类别应该始终相同.但是当id为null时,项应显示每个项,当设置id时,项应显示特定类的项.
这一切都非常好,所以当我点击一个类别链接.我这样得到了网址:
/产品/首页/ 3
大!现在我点击“全部”链接,但它将我路由到/ Products / Index / 3,即使我显然没有传递参数.我尝试传递一个空值:
@Html.ActionLink("Alle","Products",new { id = null })
但我得到错误:无法将’null’分配给匿名类型属性.
如何强制null传递给我的索引控制器?
解决方法
@Html.ActionLink("Alle",new { id = (int?)null })
AngularJS将指令模板中的参数传递给控制器
.directive('nodeList',function($compile) { return { restrict: 'E',terminal: true,scope: { nodes: '=ngModel',deleteArticle: '&',editArticle: '&' },link: function ($scope,$element,$attrs) { if (angular.isArray($scope.nodes)) { $element.append('<accordion close-others="true"><node ng-repeat="item in nodes" ng-model="item" delete-article="deleteArticle(node_item)" edit-article="editArticle(node_item)"></node></accordion>'); } $compile($element.contents())($scope.$new()); } }; }) .directive('node',scope: { node: '=ngModel',$attrs) { if (angular.isArray($scope.node.Options) && $scope.node.Options.length > 0) { $element.append('<accordion-group><accordion-heading>{{node.Title}} <a href=\"javascript:void(0)\" ng-click=\"editArticle({node_item: node})\" data-toggle=\"modal\" data-target=\"#new-article\" class=\"action\"><i class=\"glyphicon glyphicon-edit\"></i></a></accordion-heading><node-list ng-model="node.Options"></node-list>{{node.Content}}</accordion-group>'); } else { $element.append('<accordion-group><accordion-heading>{{node.Title}} <a href=\"javascript:void(0)\" ng-click=\"editArticle({node_item: node})\" data-toggle=\"modal\" data-target=\"#new-article\" class=\"action\"><i class=\"glyphicon glyphicon-edit\"></i></a></accordion-heading>{{node.Content}}</accordion-group>'); } $compile($element.contents())($scope.$new()); } }; })
和这样的HTML:
<node-list ng-model="articles" delete-article="deleteArticle(node_item)" edit-article="editArticle(node_item)"></node-list>
在控制器中:
$scope.editArticle = function(vArticle) {}
当我只有一个指令 – 一切都很清楚,但是当我的指令调用另一个指令时如何传递参数?这是真的吗?如何?
解决方法
在你的nodeList指令中,调用你的节点,如下所示:
<node ng-repeat="item in nodes" ng-model="item" delete-article="deleteArticle({node_item: node_item})" edit-article="editArticle({node_item: node_item})"></node>
并在您的node指令中,调用您的nodeList,如下所示:
<node-list ng-model="node.Options" delete-article="deleteArticle({node_item: node_item})" edit-article="editArticle({node_item: node_item})"></node-list>
所以引用“node_item”正在孩子的孩子的孩子之间正确传递到最顶级的父母(你的控制器:)
看看这个:Plunker
原因:
你的< node-list>有自己的范围,你需要将“node_item”传递给父范围(你的控制器),简单!棘手的部分是在孙子范围内调用该函数(< node>),因此您再次需要将“node_item”从孙子传递给子节点.
调用compile时也不需要创建新的作用域.您在那里的$scope对象还有一个来自父作用域的新作用域.
ASP.NET List 将null传递给控制器
如何解决ASP.NET List <SelectListItem>将null传递给控制器?
我有一个带有单选按钮的表格。选择其中一个后,在[POST]方法中,“公司”列表计数仍为0。您知道导致问题的原因吗?
控制器:
// GET: Commission/Create
public ActionResult Create()
{
CommissionMVCCreateModel commission = new CommissionMVCCreateModel();
List<CompanyMVCModel> companies = sqliteDataAccess.LoadCompanies();
commission.Companies = companies.Select(x => new SelectListItem { Text = x.CompanyName,Value = x.Id.ToString() }).ToList();
return View(commission);
}
// POST: Commission/Create
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Create(CommissionMVCCreateModel commissionModel)
{
try
{
if(ModelState.IsValid)
{
}
// Todo: Add insert logic here
return View();
}
catch
{
return View();
}
}
型号:
public class CommissionMVCCreateModel
{
public List<SelectListItem> Companies { get; set; } = new List<SelectListItem>();
...
...
}
查看:
<form>
...
...
@Html.LabelFor(model => model.Companies,htmlAttributes: new { @})
<div>
@foreach (var company in Model.Companies)
{
<label>
<input type="radio" name="company" id="@company.Value" value="@company.Value"/>
@company.Text
</label>
}
</div>
...
...
</form>
在表格中,我也有部分内容用于创建新公司,并且其值已正确传递。我唯一的问题是与此SelectListItem。我也尝试使用SelectList,但是结果是一样的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
ASP.NET MVC null模型传递给控制器动作
public FileContentResult GetimageForArticle(ArticleSummary article) { if (article == null || !article.ContainsValidThumbNail()) return null; return File(article.ThumbNail,article.ThumbNaiType); }
从以下局部视图:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<AkwiMemorial.Models.ArticleSummary>>" %> <%if (Model.Count() > 0) { %> <table> <% foreach (var item in Model) { %> <tr> <td> <img src='<%=Url.Action("GetimageForArticle","Resources",new { article = item })%>' alt=""/> </td> </tr> <% } %> </table>
解决方法
<%=Url.Action("GetimageForArticle",new { article = item })%>
只有简单的标量属性:
<%=Url.Action("GetimageForArticle",new { Id = item.Id,Foo = item.StringFoo,Bar = item.IntegerBar })%>
所以在这种情况下的一个好习惯是只发送一个id:
<%=Url.Action("GetimageForArticle",new { id = item.Id }) %>
然后让你的控制器操作从存储的任何地方获取相应的模型给出这个id:
public ActionResult GetimageForArticle(int id) { ArticleSummary article = _someRepository.GetArticle(id); if (article == null || !article.ContainsValidThumbNail()) { return null; } return File(article.ThumbNail,article.ThumbNaiType); }
ASP.NET Razor 中的 HTML.ActionLink 与 Url.Action
HTML.ActionLink
vs之间有什么区别Url.Action
还是它们只是做同一件事的两种方式?
我什么时候应该更喜欢其中一个?
今天关于razor – 使用ActionLink将null参数传递给控制器和java null作为参数传递的讲解已经结束,谢谢您的阅读,如果想了解更多关于AngularJS将指令模板中的参数传递给控制器、ASP.NET List
本文标签: