如何从javascript变量中传递一个值给razor变量,有没有可能是asp.net mvc razor视图引擎?
@{
int a = 0;
}
<script>
var b = ...
@a = b;
</script>发布于 2015-11-03 20:41:47
但是,如果在@html.Hidden字段中使用一个变量来代替变量,这是可能的。如本例所示。
@Html.Hidden("myVar", 0);按脚本设置字段:
<script>
function setMyValue(value) {
$('#myVar').val(value);
}
</script>我希望我至少能提供不小的变通方法。
发布于 2018-02-28 22:11:46
好吧,这个问题很老了.但我想做一些类似的事情,我找到了一个适合我的解决方案。也许这对其他人有帮助。
我有一个List<QuestionType>,我用它填充一个下拉列表。我希望将该选择放入我在表单中创建的Question对象的QuestionType属性中。我使用Knockout.js进行select绑定。当用户选择一个对象时,这会将self.QuestionType敲出可观察属性设置为QuestionType对象。
<select class="form-control form-control-sm"
data-bind="options: QuestionTypes, optionsText: 'QuestionTypeText', value: QuestionType, optionsCaption: 'Choose...'">
</select>我有一个隐藏的字段来保存这个对象:
@Html.Hidden("NewQuestion.QuestionTypeJson", Model.NewQuestion.QuestionTypeJson)在observable的订阅中,我将隐藏字段设置为该对象的JSON.stringify-ed版本。
self.QuestionType.subscribe(function(newValue) {
if (newValue !== null && newValue !== undefined) {
document.getElementById('NewQuestion_QuestionTypeJson').value = JSON.stringify(newValue);
}
});在Question对象中,有一个名为QuestionTypeJson的字段,该字段在用户选择问题类型时填充。我使用这个字段来获取Question对象中的QuestionType,如下所示:
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字段中的内容。
实际上,我在没有使用Razor或Ajax调用的情况下“传递”了一个JavaScript对象给我的模型。您可能不使用Knockout.js也可以做类似的事情,但这就是我要使用的,所以...
发布于 2017-05-16 16:57:32
我看到这个问题已经讨论了一段时间了,但是如果有人还会遇到这个问题,这是我的解决方案:
在*.cshtml视图文件中:
<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对象。
希望它能帮助一些人!
https://stackoverflow.com/questions/28317182
复制相似问题