首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将javascript变量的值传递给razor变量?

如何将javascript变量的值传递给razor变量?
EN

Stack Overflow用户
提问于 2015-02-04 16:55:42
回答 7查看 173.4K关注 0票数 58

如何从javascript变量中传递一个值给razor变量,有没有可能是asp.net mvc razor视图引擎?

代码语言:javascript
复制
@{
    int a = 0;
}

<script>
    var b = ...
    @a = b;
</script>
EN

回答 7

Stack Overflow用户

发布于 2015-11-03 20:41:47

但是,如果在@html.Hidden字段中使用一个变量来代替变量,这是可能的。如本例所示。

代码语言:javascript
复制
@Html.Hidden("myVar", 0);

按脚本设置字段:

代码语言:javascript
复制
<script>
function setMyValue(value) {
     $('#myVar').val(value);       
}
</script>

我希望我至少能提供不小的变通方法。

票数 53
EN

Stack Overflow用户

发布于 2018-02-28 22:11:46

好吧,这个问题很老了.但我想做一些类似的事情,我找到了一个适合我的解决方案。也许这对其他人有帮助。

我有一个List<QuestionType>,我用它填充一个下拉列表。我希望将该选择放入我在表单中创建的Question对象的QuestionType属性中。我使用Knockout.js进行select绑定。当用户选择一个对象时,这会将self.QuestionType敲出可观察属性设置为QuestionType对象。

代码语言:javascript
复制
<select class="form-control form-control-sm"
    data-bind="options: QuestionTypes, optionsText: 'QuestionTypeText', value: QuestionType, optionsCaption: 'Choose...'">
</select>

我有一个隐藏的字段来保存这个对象:

代码语言:javascript
复制
@Html.Hidden("NewQuestion.QuestionTypeJson", Model.NewQuestion.QuestionTypeJson)

在observable的订阅中,我将隐藏字段设置为该对象的JSON.stringify-ed版本。

代码语言:javascript
复制
self.QuestionType.subscribe(function(newValue) {
    if (newValue !== null && newValue !== undefined) {                       
        document.getElementById('NewQuestion_QuestionTypeJson').value = JSON.stringify(newValue);
    }
});

Question对象中,有一个名为QuestionTypeJson的字段,该字段在用户选择问题类型时填充。我使用这个字段来获取Question对象中的QuestionType,如下所示:

代码语言:javascript
复制
public string QuestionTypeJson { get; set; }

private QuestionType _questionType = new QuestionType();
public QuestionType QuestionType
{
    get => string.IsNullOrEmpty(QuestionTypeJson) ? _questionType : JsonConvert.DeserializeObject<QuestionType>(QuestionTypeJson);
    set => _questionType = value;
}

因此,如果QuestionTypeJson字段包含某些内容,它将对其进行反序列化并将其用于QuestionType,否则它将只使用backing字段中的内容。

实际上,我在没有使用RazorAjax调用的情况下“传递”了一个JavaScript对象给我的模型。您可能不使用Knockout.js也可以做类似的事情,但这就是我要使用的,所以...

票数 2
EN

Stack Overflow用户

发布于 2017-05-16 16:57:32

我看到这个问题已经讨论了一段时间了,但是如果有人还会遇到这个问题,这是我的解决方案:

在*.cshtml视图文件中:

代码语言:javascript
复制
<script>
var data = JsFunction("@Html.Raw(Model.Path)");
$(function () {
    $("#btn").click(function () {
        var model = { Id: '@Html.Raw(Model.Id)', Data: data }
        $.ajax({
            type: "POST",
            url: "/Controller/Action",
            data: model,
            datatype: "html",
            success: function() {
                console.log('Success');
            }
        });
    });
});
</script>

JavaScript变量模型是我需要传递给Razor ViewModel的东西。这可以通过ajax请求来完成。你只需要在你的操作中有合适的参数,匹配在JavaScript中创建的Json对象。

希望它能帮助一些人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28317182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档