【问题标题】:Property of partial view is not set correctly when calling with ajaxajax调用时局部视图属性设置不正确
【发布时间】:2020-12-07 17:02:51
【问题描述】:

我创建了一个 BaseView 类,我的所有视图都继承自该类。这包含属性Language。在所有“正常”视图中,语言都会正确更改。

public abstract class BaseView<TModel> : WebViewPage<TModel>
{
    string _language = TextRepository.DEFAULT_LANGUAGE;

    public string Language { get { return _language; } }

    public BaseView()
        : base()
    {

    }

    protected override void InitializePage()
    {
        base.InitializePage();

        _language = Url.RequestContext.RouteData.Values["lang"] != null ? (string)Url.RequestContext.RouteData.Values["lang"] : _language;
    }
}

public abstract class BaseView : BaseView<dynamic>
{
}

在我的一个观点中,我使用 ajax 调用 CandidatePartialRow,以添加另一个部分行:

$("#addAnother").click(function () {
    $.get('/MyController/CandidatePartialRow', function (template) {
        $("#candidateEditor").append(template);
        let target = $('#candidateEditor').children().last();

        $('html, body').animate({
            scrollTop: target.find('span').first().offset().top - 15
        }, 1000);
    });
});
public ActionResult CandidatePartialRow()
{
    var view = PartialView("EditorTemplates/MyPartialView");
    
    return view;
}

调用和附加功能完美。

所以我将语言从“DE”(这也是默认设置)更改为“FR”。在“正常”视图中,语言发生了变化。当我单击“添加”按钮添加局部视图时,会添加局部视图,但使用默认语言(“DE”)。

知道这里有什么问题吗?或者我怎样才能改变语言? (我也得到了控制器中的语言——但这也是默认语言,否则我可以在CandidatePartialRow-方法中设置它。但我不知道如何..)

【问题讨论】:

    标签: c# ajax asp.net-mvc partial-views


    【解决方案1】:

    好的,简单的解决方案... 该语言未添加到 url,因此默认语言始终与路由一起设置。 而不是'/MyController/CandidatePartialRow' 我应该使用

    $.get('@Url.Action("CandidatePartialRow", "MyController")', function (template) {...})
    

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 1970-01-01
      • 2012-08-04
      • 2011-08-05
      • 2012-06-09
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      相关资源
      最近更新 更多