One of the place I had to pass a value from a view to a partial view but I was not supposed to alter the model. Hence. I went back to the roots and used session to pass the value between the views. Whats important here is that, as it is a session value, you can pass it from anywhere to anywhere. It will always be accessible. So here’s how to do it:
The beauty of session is, you can use it from anywhere:
Part 1: Saving the Value
1. From Controller:
1 2 3 4 5 6 7 8 9 |
<span class="kwd">public</span> <span class="kwd">class</span> <span class="typ">Yourontroller</span> <span class="pun">:</span> <span class="typ">Controller</span> <span class="pun">{</span> <span class="kwd">public</span> <span class="typ">ActionResult</span> <span class="typ">SetSession</span><span class="pun">(</span><span class="kwd">string</span><span class="pln"> value</span><span class="pun">)</span> <span class="pun">{</span> <span class="typ">Session</span><span class="pun">[</span><span class="str">"YourSessionKey"</span><span class="pun">]</span> <span class="pun">=</span><span class="pln"> value</span><span class="pun">;</span> <span class="kwd">return</span> <span class="kwd">View()</span><span class="pun">;</span> <span class="pun">}</span> <span class="pun">}</span> |
2. From View:
Snippet.cshtml
@model contracts.ModelName
@{
Session[“YourSessionKey“] = @Model.Name;
}
Part 2: Accessing the value:
You can again access this value in controller or view both.
In controller:
1 2 3 4 5 6 7 8 9 |
<span class="kwd">public</span> <span class="kwd">class</span> <span class="typ">Yourontroller</span> <span class="pun">:</span> <span class="typ">Controller</span> <span class="pun">{</span> <span class="kwd">public</span> <span class="typ">ActionResult</span> G<span class="typ">etSession</span><span class="pun">(</span><span class="kwd">string</span><span class="pln"> value</span><span class="pun">)</span> <span class="pun">{</span> <span class="kwd">var</span> <span class="typ">SessionValue</span><span class="pun">=</span><span class="typ">Session</span><span class="pun">[</span><span class="str">"YourSessionKey"</span><span class="pun">];</span> <span class="kwd">return</span> <span class="kwd">View()</span><span class="pun">;</span> <span class="pun">}</span> <span class="pun">}</span> |
In View:
Snippet
1 2 3 4 |
@model contracts.SomeOtherModel @{ int <span class="typ">SessionValue </span>= <span class="typ">Session</span><span class="pun">[</span><span class="str">"YourSessionKey"</span><span class="pun">];</span> |
1 |
} |
1 2 3 |
<span class="pun"> There you go! Happy coding!</span> |