为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在不创建视图模型的情况下返回模型和字符串?

是否可以在不创建视图模型的情况下返回模型和字符串?

C#
牛魔王的故事 2021-11-21 10:45:54
我想实现这样的目标:public IActionResult Test(string id){    (...)    var user = context.Users.First(x => x.Id.ToString() == id);    var message = "abc";    return View("Edit", user, message);}这可能不创建 ViewModel 吗?
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我完全同意尽可能使用视图模型的建议。它们更容易使用,即使它们有时看起来有点矫枉过正。


也就是说,要回答您的问题,您可以使用 a Tuple:


public IActionResult Test(string id)

{

    var user = context.Users.First(x => x.Id.ToString() == id);

    var message = "abc";


    // The generic types will be inferred here so they're not necessary

    // but I've added them for clarity in the example.

    var viewModel = Tuple.Create<User, string>(user, message);


    return View("Edit", viewModel);

}

然后在视图中,你需要这个:


@model Tuple<User, string>

只需确保将正确的命名空间添加到User视图中的类型。


编辑

为了完整ValueTuple起见,下面是使用C# 7 中的a 的示例,下面是 Adam 的评论:


public IActionResult Test(string id)

{

    var user = context.Users.First(x => x.Id.ToString() == id);

    var message = "abc";


    return View("Edit", (user, message));

}

如果您使用 .NET Core 2.1 及更高版本,则视图的model指令将变为:


@model (User user, string message)

然后你会像这样访问那些:


@Model.user

否则,您将需要使用(从评论中归功于@AdamSimon):


@model ValueTuple<User, string>

var (user, message) = Model;

有关详细信息,请参阅MSDN 上的C# 7.0 中的新增功能博客文章。


查看完整回答
反对 回复 2021-11-21
?
12345678_0001

TA贡献1802条经验 获得超5个赞

您可以使用 ViewBag,但要注意它的内容不是强类型的。


控制器


public IActionResult Test(string id)

{

    (...)


    ViewBag.User = context.Users.First(x => x.Id.ToString() == id);

    ViewBag.Message = "abc";


    return View("Edit");

}

看法


@{

    User user = ViewBag.User as User; 

    string message = ViewBag.Message as string;

}


查看完整回答
反对 回复 2021-11-21
?
萧十郎

TA贡献1815条经验 获得超13个赞

尝试使用匿名对象:


public IActionResult Test(string id)

{

    (...)


    var user = context.Users.First(x => x.Id.ToString() == id);

    var message = "abc";


    return View("Edit", new {User = user, Message = message});

}


查看完整回答
反对 回复 2021-11-21
  • 3 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信