3 回答

TA貢獻1744條經(jīng)驗 獲得超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指令將變?yōu)椋?/p>
@model (User user, string message)
然后你會像這樣訪問那些:
@Model.user
否則,您將需要使用(從評論中歸功于@AdamSimon):
@model ValueTuple<User, string>
var (user, message) = Model;
有關(guān)詳細信息,請參閱MSDN 上的C# 7.0 中的新增功能博客文章。

TA貢獻1802條經(jīng)驗 獲得超5個贊
您可以使用 ViewBag,但要注意它的內(nèi)容不是強類型的。
控制器
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;
}

TA貢獻1815條經(jīng)驗 獲得超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});
}
- 3 回答
- 0 關(guān)注
- 222 瀏覽
添加回答
舉報