6

現在、機能するメソッドがあります。ここのリンクをクリックすると、Razorのコードが機能します。

@Html.ActionLink("New User ,Register", "Register", new { OpenID = Model.OpenID })

同じ効果が欲しいのですが、コントローラーからビューを返します。現時点では、このコードを使用していますが成功していません。

return View("Register", lm);

私はMVCにかなり慣れていないので、少し混乱しています。私の最後のコードで返されたビューはsmtを見逃し、私がサポートしているのはパーツに接続されていますnew { OpenID = Model.OpenID }

正しい方向に私を指摘してもらえますか?

これが私のコントローラーの方法です。

public ActionResult Register(string OpenID)
4

3 に答える 3

15

とを避けるよう にしてください。強く型付けされたを使用してみてください。それはあなたのコードをきれいにします(そしてあなたのコードを維持しようとしている次の開発者、HAPPYViewDataViewBagViewModels

OpenIDあなたに呼ばれるプロパティを持っているViewModel

public class RegisterViewModel
{
     //Other Properties also
     public string OpenID { set; get; }
}

actionこれで、ビューを返すときにこの値をメソッドで設定できます。

public ActionResult Register(string OpenId)
{
     var vm = new RegisterViewModel();
     vm.OpenID = OpenId;
     return View(vm);
}
于 2012-07-13T18:43:26.350 に答える
6

ViewBag変数に必要なデータを追加できます。

コントローラでは、値をそのように設定します。

コントローラ

public ActionResult Register()
{
    ViewBag.OpenID = OpenID;

    return View()
}

そして、あなたのかみそりのビューでは、同じ方法でそれにアクセスすることができます

MVC3レイザービュー

@ViewBag.OpenID
于 2012-07-13T18:34:02.600 に答える
4

このビュー(ViewA)をご覧ください。

<div>
    @Html.ActionLink("My link", "ViewB", new { someData = "some data I'm passing on" })
</div>

そして、これらの2つのアクション:

    public ActionResult ViewA()
    {
        return View();
    }

    public ActionResult ViewB(string someData)
    {
        //Here someData has the value "some data I'm passing on"
        return View();
    }

get(つまり、クエリ文字列)で値を渡すだけです。名前を一致させることで、MVCは私たちのために魔法をかけることができます=)

お役に立てれば。

よろしく

于 2012-07-13T18:53:17.893 に答える