return 视图中的元组到 js

return Tuple to js in view

尝试使用像

这样的 c# 7 元组
public (string, bool) ProcessForm([FromBody]Dictionary<string,string> contactFormRequest)

但我收到错误 "CS1031: Type expected"。我想这还不支持。

然后我试了

public Tuple<string, bool> ProcessForm([FromBody]Dictionary<string,string> contactFormRequest)
    {
        var message = "test";
        var result = true;
        var tuple = new Tuple<string, bool>(message, result);
        return tuple;
    }

这没有错误,但我无法在视图文件中提取它

function handleResult(data) {
    $("#custommessages").html(data.Item1);
}

sxc(@Dnn.Module.ModuleID).webApi.post("Form/ProcessForm", {}, newItem, true).then(handleResult);

这没有输出。

如果我 return 来自控制器的一个简单字符串,"data" 可以很好地选择它。

如何从元组中获取值 return?

为什么不创建一个 POCO class 用于序列化:

public class SomeResult
{
    public string Message{get;set;}
    public bool Result{get;set;}
}

然后

public SomeResult ProcessForm([FromBody]Dictionary<string,string> contactFormRequest)
{
    var message = "test";
    var result = true;
    return new SomeResult{Message = message, Result = result};
}

为什么不 return 一个 IActionResult?

你可以简单地写一个匿名类型而不是元组!

命名类型可能会占用一些无用的空间(我认为...)

试试这个:

public IActionResult ProcessForm([FromBody]Dictionary<string,string> contactFormRequest)
{
    var message = "test";
    var result = true;
    //This will create an anonymous type! (you can see its named as "a'")
    var resultData = new { Message = message, Result = result }; 
    return Json(resultData);
}

希望对您有所帮助。