【问题标题】:Send value from view to ActionResult controller将值从视图发送到 ActionResult 控制器
【发布时间】:2022-01-17 21:07:31
【问题描述】:

我正在尝试将

  • 元素的值从一个局部视图传递到控制器中的 ActionResult,并根据所选
  • 值使用过滤结果更新第二个局部视图。

    我的问题是现在我无法将值传递给控制器​​。

    这是我要设置过滤器的第一个视图中的代码:

    @if (MainFaqCategories != null && MainFaqCategories != null && MainFaqCategories.Count != 0)
        {<ul class="faq-menu">
                @foreach (var mainType in MainFaqCategories)
                {
                    <li id="@mainType.TabCode" onclick="getChosenCategory(this.id)">@mainType.Descr</li>
                }
            </ul>
        }
    

    这是我的 Ajax 代码:

    var lang = $("html").attr("lang");
    function getChosenCategory(selectedCategory) {
        console.log(selectedCategory);
        var url = '@Url.Action("GetChosenFaqSubCategory")';
        $.ajax({
            url: url,
            type: 'POST',
            async: true,
            data: { TypeCode: selectedCategory},
        });
    }
    

    这是我在控制器中的代码:

    [HttpPost]
        public ActionResult GetChosenFaqSubCategory(string TypeCode)
        {
            string pFilter = "WebFaqCategoryCd=" + TypeCode;
            int maxnr = Convert.ToInt32(MaxNbrFaq);
    
            List<ArticleFAQ> subCategories = ServiceWrapper.GetWebFaq(pCoCd, language, loginId, pFilter, out maxnr, out errorText);
    
            return PartialView("GlobalFAQ", subCategories);
        }
    

    作为我在控制台中遇到的错误:
    POST - http://localhost:4361/en/FAQ/GetChosenFaqSubCategory - 404(未找到)

    当我删除语言部分时,其他控制器会抛出错误,因为该站点有多种语言并且我需要它

  • 【问题讨论】:

    • 你有什么错误?你检查浏览器的开发者工具了吗?
    • 作为我在控制台中遇到的错误:POST localhost:4361/en/faq/GetChosenFaqSubCategory?TypeCode=20 - 404(未找到)。当我删除语言部分时,其他控制器会抛出错误,因为该站点有多种语言,我需要它
    • 您的控制器名称是什么?

    标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api model-view-controller


    【解决方案1】:

    你必须在 url 中添加一个控制器

    //@Url.Action("Action","Controller")
     var url = '@Url.Action("GetChosenFaqSubCategory","...your controller")';
    

    并从action中删除Post,并添加路由,因为你使用lang,所以很混乱

     [Route("~/{ln}/faq/GetChosenFaqSubCategory")]
     public ActionResult GetChosenFaqSubCategory(string ln,string typeCode)
    

    如果还是不行,试试get

     [Route("~/{ln}/faq/GetChosenFaqSubCategory/{typeCode}")]
     public ActionResult GetChosenFaqSubCategory(string ln,string typeCode)
    

    和ajax

     var url = '@Url.Action("GetChosenFaqSubCategory","...your controller")';
    
        $.ajax({
            url: url+"/"+selectedCategory,
            type: 'GET',
            success: ...  your partial view code
              });
    

    【讨论】:

    • 不是这个原因。它正在正确找到控制器。我添加到控制台中显示什么错误的问题
    • @Atanas ,我不知道您如何配置路由,因此请尝试在我的答案中使用属性路由并从启动时发布您的端点配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2011-08-09
    • 2021-09-15
    相关资源
    最近更新 更多