如何在MVC视图中调用jScript函数

时间:2016-06-27 19:15:39

标签: asp.net-mvc

我有这个函数in.js文件:

 function setValue(amount) {
    if (amount === 0) {
        .....
    loanDriver._mem.loanValue = amount;
}

我喜欢在我的MVC视图中调用它并将此值发送给它:Model.ApprovedAmount

我试过了:

  <script type="text/javascript">
    setValue(@Html.Raw(Model.ApprovedAmount))
</script>

它不起作用。

我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

您现有的代码可能不需要Html.Raw()来电,但除此之外,它至少看起来是正确的:

<script type="text/javascript">
   setValue(@Model.ApprovedAmount)
</script>

您可能需要考虑一些事项来进一步解决此问题:

检查参考文献

首先,请确保在示例中显示的现有setValue()标记之前引用了定义<script>函数的Javascript文件。这很重要,否则您的网页将无法知道setValue() 是:

<script src='your-file-with-setvalue-defined.js'></script>
<script>
    setValue(@Model.ApprovedAmount);
</script>

使用开发人员工具

检查浏览器中的开发人员工具(F12),特别是网络和控制台选项卡。这些将揭示有关确切出错的更多细节(即404错误,未定义的函数,错误的参数等)。

使用debugger

考虑在debugger函数中使用setValue()关键字来查看它是否被调用以及传递的值是什么样的:

<script>
    // Run this with your Developer Tools open and step into the function to
    // see more
    debugger;
    setValue(@Model.ApprovedAmount);
</script>

示例

您可以see a complete example here并在下面看到,它展示了按预期工作的基本理念:

// HomeController.cs
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new SampleViewModel(){ Amount = 42 });
    }
}

// SampleViewModel.cs
public class SampleViewModel
{
    public int Amount { get; set; }
}

// Index.cshtml
@model HelloWorldMvcApp.SampleViewModel
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Calling Function From Model</title>
    </head>
    <body>
        <script>
            function setValue(amount) {
                alert(amount);
            }
            setValue(@Model.Amount);
        </script>
    </body>
</html>

答案 1 :(得分:0)

假设您只是在视图上执行此操作,您可以执行以下操作:

<text><b>some text:</b> </text> @Html.TextBox("something", null, new { "callsomefunction"() })

答案 2 :(得分:0)

谢谢大家,我只需要使用该函数的文件点名称的名称,它就可以了。 jsfile.setValue(@ Model.ApprovedAmount);