GVKun编程网logo

razor – 使用ActionLink将null参数传递给控制器(java null作为参数传递)

21

在本文中,您将会了解到关于razor–使用ActionLink将null参数传递给控制器的新资讯,同时我们还将为您解释javanull作为参数传递的相关在本文中,我们将带你探索razor–使用Acti

在本文中,您将会了解到关于razor – 使用ActionLink将null参数传递给控制器的新资讯,同时我们还将为您解释java null作为参数传递的相关在本文中,我们将带你探索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作为参数传递)

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传递给我的索引控制器?

解决方法

你的控制器动作会很高兴接受一个可以为空的int,所以给它一个可以为空的int就像这样!

@Html.ActionLink("Alle",new { id = (int?)null })

AngularJS将指令模板中的参数传递给控制器

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 <SelectListItem>将null传递给控制器

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模型传递给控制器动作

ASP.NET MVC null模型传递给控制器动作

为什么将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.ActionLinkvs之间有什么区别Url.Action还是它们只是做同一件事的两种方式?

我什么时候应该更喜欢其中一个?

今天关于razor – 使用ActionLink将null参数传递给控制器java null作为参数传递的讲解已经结束,谢谢您的阅读,如果想了解更多关于AngularJS将指令模板中的参数传递给控制器、ASP.NET List 将null传递给控制器、ASP.NET MVC null模型传递给控制器动作、ASP.NET Razor 中的 HTML.ActionLink 与 Url.Action的相关知识,请在本站搜索。

本文标签: