【问题标题】:Writing to new local file from javascript MVC从 javascript MVC 写入新的本地文件
【发布时间】:2017-09-04 15:08:43
【问题描述】:

我在共享布局中有一个下拉菜单,其中有一个选项称为“给我发邮件”。 一旦按下“给我发邮件”,就会出现一个弹出模式,其中可以填写邮件、号码和消息。

问题/挑战:似乎没有任何东西(viewModel)从我的共享布局 .cshtml 上的 javascript 传递到后端。我想首先将我的值正确传递给控制器​​,以便我可以将信息写入文件,然后我可以查看并联系填写框中的任何人。

模式代码`

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4><span class="glyphicon glyphicon-lock"></span> Kontakt</h4>
            </div>
            <div class="modal-body">
                <form role="form">
                    <div class="form-group">
                        <label for="telefonnummer"><span class="glyphicon glyphicon-earphone"></span> Telefonnummer</label>
                        <input type="number" class="form-control" id="telefonnummer" placeholder="Ange telefonnummer">
                    </div>
                    <div class="form-group">
                        <label for="email"><span class="glyphicon glyphicon-envelope"></span> Email</label>
                        <input type="text" class="form-control" id="email" placeholder="Ange email">
                    </div>
                    <div class="form-group">
                        <label for="meddelande"><span class="glyphicon glyphicon-pencil"></span> Meddelande</label>
                        <input type="text" class="form-control" style="height:50px" id="meddelande" placeholder="Ange meddelande">
                    </div>                      
                    <button type="submit" class="btn btn-block" onclick="SkickaMail()">
                        Skicka
                        <span class="glyphicon glyphicon-ok"></span>
                    </button>
                </form>
            </div>
            <div class="modal-footer">
                <button type="submit" class="btn btn-danger btn-default pull-left" data-dismiss="modal">
                    <span class="glyphicon glyphicon-remove"></span> Avbryt
                </button>
                @*<p>Need <a href="#">help?</a></p>*@
            </div>
        </div>
    </div>
</div>`

“SickaMail”应该调用 Javascript 并发送一个 viewModel。 假设将 val:s 发送到控制器页面 PeopleController 和 IactionResult Kontakt,但没有任何东西传递给控制器​​,当我在控制器中调试时,vals 为空。 代码如下

<script>
//DEN HÄR DELEN FUNKAR INTE, VÄRDENA SKICKAS INTE KORREKT TILL CONTROLLERN AV NÅGON ANLEDNING.
    function SkickaMail() {

        var dataX = {
            //.val()metoden nedan är jQuery
            "@nameof(MVCrepetition.Models.ViewModels.Mail.TelNummer)": $("#@nameof(Model.TelNummer)").val(),
            "@nameof(MVCrepetition.Models.ViewModels.Mail.EMail)": $("#@nameof(Model.EMail)").val(),
            "@nameof(MVCrepetition.Models.ViewModels.Mail.Meddelande)": $("#@nameof(Model.Meddelande)").val()
        }


        $.post("/Kontakt", dataX, function (json) {

            })

        }
</script>

控制器代码:

  [HttpPost]
    public IActionResult Kontakt(Mail viewModel)
    {
        Mail mail = new Mail();
        mail.TelNummer = viewModel.TelNummer;
        mail.EMail = viewModel.EMail;
        mail.Meddelande = viewModel.Meddelande;

        System.IO.File.WriteAllText(@"c:\Users\Administrator\Desktop\LiveTradingProject\mailfromcontact.json", JsonConvert.SerializeObject(mail));

        //using (StreamWriter file = File.CreateText(@"c:\movie.json"))
        //    {
        //       JsonSerializer serializer = new JsonSerializer();
        //       serializer.Serialize(file, movie);
        //    }

        return null;
    }

我在服务器端打断点,但 viewModels 的值都是空的 enter image description here

【问题讨论】:

  • 我认为您没有提供足够的信息。其余的代码在哪里?我们还需要查看控制器。编辑:第二个 sn-p 中存在复制/粘贴错误。
  • 我认为你应该做onclick="return SkickaMail()",并在你的js函数末尾加上return false
  • dataX 中的名称-值对看起来很奇怪。你想在那里实现什么?我不熟悉 @ 和 #... nameof 的所有语法看起来像一个服务器端方法...您是否希望这些字符串在服务器端得到评估?我们需要看看你在服务器上对这些字符串做了什么。
  • @Shyju 你可能是对的——我也想在成功回调中看到一个空方法以外的东西,但我认为这不是他的问题的原因——从描述中,听起来他能够成功地在服务器上打断点,但是 dataX 是空的。
  • 他的代码很好(构建对象)。只需添加一个console.log(dataX) 即可看到obj。

标签: javascript asp.net-mvc model-view-controller viewmodel


【解决方案1】:

我没有在我的 Modal 中正确使用 ID,这就是问题所在。 Id 现在与 val:s 匹配,并且可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多