gpt4 book ai didi

javascript - ASP.NET MVC 混合 Razor 和 JavaScript

转载 作者:行者123 更新时间:2023-11-28 03:49:52 25 4
gpt4 key购买 nike

我们如何将 JavaScript 变量传递给 Razor 代码?

这里我有一个简单的选项卡

<div id="AboutDoctor" style="min-height:34vh;">
<div class="row text-center text-primary">@MEDONET.Language.Doctor.Texts.About</div>
<div class="col-xs-2">
<!-- required for floating -->
<!-- Nav tabs -->
<ul class="nav nav-tabs tabs-left">
<li><a href="#_Info" data-toggle="tab" onclick="GetTabPane('_Info')">@MEDONET.Language.Doctor.Texts.Info</a></li>
<li><a href="#_Diplomas" data-toggle="tab" onclick="GetTabPane('_Diplomas')">@MEDONET.Language.Doctor.Texts.Diplomas</a></li>
<li><a href="#profile" data-toggle="tab">@MEDONET.Language.Common.Texts.Licenses</a></li>
<li><a href="#messages" data-toggle="tab">@MEDONET.Language.Doctor.Texts.Summary</a></li>
<li><a href="#settings" data-toggle="tab">@MEDONET.Language.Common.Texts.Reviews</a></li>
<li><a href="#_Contacts" data-toggle="tab" onclick="GetTabPane('_Contacts')">@MEDONET.Language.IndexTexts.Contact</a></li>
</ul>
</div>
<div class="col-xs-9" style="margin-top:3vh">
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane" id="_Info">@MEDONET.Language.Common.Texts.Loading...</div>
<div class="tab-pane" id="_Diplomas">@MEDONET.Language.Common.Texts.Loading...</div>
<div class="tab-pane" id="profile">Licenses</div>
<div class="tab-pane" id="messages">Summary</div>
<div class="tab-pane" id="settings">Reviews</div>
<div class="tab-pane" id="_Contacts">@MEDONET.Language.Common.Texts.Loading...</div>
</div>
</div>

通过单击选项卡,用户调用 GetTabPane() 函数并将函数名称传递给它。该函数本身如下所示:

 function GetTabPane(val) {
$('#'+val).load("@Url.Action("val", "Doctors", new { id = Model.Id })",
function () { $('#'+val).tab-pane('show') });
}

除了我试图将 val 作为操作名称传递的部分之外,几乎所有内容都是工作

...Action("val",...

那么如何在脚本 block 内将 JavaScript 值传递给 Razor?

最佳答案

您无法将 JavaScript 值传递给 Razor。原因是在页面页面生命周期中执行代码的时候:

  • Razor 代码在页面返回客户端之前在服务器上执行
  • 页面返回后在客户端执行 JS 代码

但是您可以通过最初使用占位符创建 URL,然后在 JS 代码中替换它来解决您的具体问题。

<script type="text/javascript">

var urlPattern = '@Url.Action("__ACTION_NAME_TO_BE_REPLACED__", "Doctors", new { id = Model.Id })';

function GetTabPane(val) {
var url = urlPattern.replace('__ACTION_NAME_TO_BE_REPLACED__', val);
$('#'+val).load(url, function () { $('#'+val).tab-pane('show'); });
}
</script>

关于javascript - ASP.NET MVC 混合 Razor 和 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48092149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com