asp.net mvc razor vb.net for loop syntax - asp.net-mvc

I am new to MVC and razor syntax .Trying to create c#.net code for viewbag but i am not able to find any value of viewbag like the example a viewbag.Message and viewbag.Numtimes
<ul>
#for (int i=0; i < ViewBag.NumTimes; i++) {
<li>#ViewBag.Message</li>
}
</ul>

It's not very different than C#, really. Just using the VB.NET syntax...
<ul>
#For i = 0 To ViewBag.NumTimes-1
#<li>#ViewBag.Message</li>
Next i
</ul>
A good reference with many examples is also here:
http://www.asp.net/web-pages/tutorials/basics/asp-net-web-pages-visual-basic
Edit: Expanded answer a bit and added a link to a nice introduction to VB.NET+Razor

<ul>
#For i=0 To (ViewBag.NumTimes-1)
<li>#ViewBag.Message</li>
Next i
</ul>
For more information see here:
http://www.w3schools.com/aspnet/razor_vb_loops.asp

Related

How to use datalist in mvc3

I am new in mvc. i am working with mvc project .it's a shopping cart project. In asp.net web forms we used data list control and we also set a RepeatColumns property like 5,10,20. What is alternate to that in MVC? Can I use the same control in MVC as well?
so can any one please tell me how to show my data in data list control?
To have five product Image in one row you can use two loops and do this in razor syntax....
<div>
<table>
#for(int i = 0; i <= (Model.Count - 1) / 5; ++i) /*Five is no of product record count per row*/
{
<tr>
for(int j = 0; j < 5 && i + j < Model.Count; ++j) {
<td style="width:240px;margin-left:30px; margin-right:30px;"> /*Adjust based on your HTML and CSS requeirment*/
<img src="#Product.ImageSource" alt="drawing" />
<Div>#Product.Title</Div>
</td>
}
</tr>
}
</table>
</div>
Above can be used to produce 5 Product Images per row....
well theoretically there are no server controls available in asp.net MVC.. For learning you can check what are the other differences in asp.net web form and MVC peradigm and must read this link. So you get overview what you can do and can't in MVC.
Now to display repeatable data in MVC you need to use LOOP and presant usign HTML helpers. You can adopt RAZOR syntax or Asp.net Syntax to show the data.
E.g in Razor you can have something like following to mimic the Repeater requirements.
<div class="container">
<header>
<h3>Auctions</h3>
</header>
<ul id="auctions">
#foreach(var auction in Model.Auctions) {
<li>
<h4 class="title">
#auction.Title
</h4>
</li>
}
</ul>
</div>
TO quickly learn what is MVC and how to do Bookbinding you can refer Music Store tutorial by Microsoft that explains basic necessarily things for MVC learner.
You question is little off topic but I love to answer them. ;) Happy coding

The Best Way to Highlight or Change Current Menu Item CSS Class in MVC

I have read a few articles as I was searching for a solution. They all seemed to favor a hard-coded or HTML Helper alternative; however, I wanted something simple and database driven. This is my best solution (submitted as an answer, by me).
Here are some other articles' solutions:
An easy way to set the active tab using controllers and a usercontrol in ASP.NET MVC?
asp.net mvc and css: Having menu tab stay highlighted on selection
ASP.NET MVC: Tabs ASCX - Adjust CSS class based on current page?
Just pass a TempData down from one of your controllers like this:
TempData("CurrentPage") = "Nutrition"
Then, in your View add a conditional like this:
<ul>
#For Each item In Model
Dim currentItem = item
If (Not String.IsNullOrEmpty(TempData("CurrentPage")) And TempData("CurrentPage") = currentItem.NAV_Element) Then
#<li><a class="current" href="#Html.DisplayFor(Function(modelItem) currentItem.NAV_Destination)">#Html.DisplayFor(Function(modelItem) currentItem.NAV_Element)</a></li>
Else
#<li>#Html.DisplayFor(Function(modelItem) currentItem.NAV_Element)</li>
End If
Next
</ul>
I have accomplished this in the past by using the route values to generate a href and then setting the parent tab to active based on that.
This is a bootstrap flavoured version:
<ul class="nav nav-tabs">
<li>Some page</li>
<li>Some other Page</li>
</ul>
<script type="text/javascript">
$(function(){
$('a[href="#Url.Action(ViewContext.RouteData.Values)"]').parents("li").addClass("active");
};
</script>
Si
I know I am too late to answer this but if you are using ASP MVC and looking for highlighting Menu items using controller and action, here is the solution which is working perfectly fine for me -
<li> <i class="fa fa-user-plus"></i> <span>Signup</span> </li>

mvc+jqm actionlink html text issue

I'm just starting out with MVC, and I'm trying to build a sample, proof of concept page for mvc interaction with jquery-mobile. I've searched for an answer on this, but I don't think I know enough yet to formulate proper queries.
On my view, I am trying to generate output that functions like this (sampled from the jqm demo site) :
<ul data-role="listview" data-inset="true">
<li><a href="index.html">
<h3>Stephen Weber</h3>
<p><strong>You've been invited to a meeting at Filament Group in Boston, MA</strong></p>
<p>Hey Stephen, if you're available at 10am tomorrow, we've got a meeting with the jQuery team.</p>
<p class="ui-li-aside"><strong>6:24</strong>PM</p>
</a></li>
<li><a href="index.html">
<h3>jQuery Team</h3>
<p><strong>Boston Conference Planning</strong></p>
<p>In preparation for the upcoming conference in Boston, we need to start gathering a list of sponsors and speakers.</p>
<p class="ui-li-aside"><strong>9:18</strong>AM</p>
</a></li>
</ul>
So, I'm working it like this :
#foreach (var item in Model) {
<li>
#Html.ActionLink( LargeExpandedMultiContentText, "Edit", new { id = item.SysID })
</li>
}
My question, which I don't know a simple way of asking, is, how, in MVC terms, do I fill the variable, so that the href generated by ActionLink() matches the style I've sampled from the jqm website?
I've tried this, and while it almost works, I'm sure its not the 'right' way, especially when I get to a spot of pulling "Steven Weber" and other strings out the the item/Model...plus it encodes the text, but I'm sure there's a way to deal with that easy enough.
#foreach (var item in Model) {
<li>
#{ String txt = "<h3>Stephen Weber</h3><p><strong>You've been invited to a meeting at Filament Group in Boston, MA</strong></p><p>Hey Stephen, if you're available at 10am tomorrow, we've got a meeting with the jQuery team.</p> <p class=\"ui-li-aside\"><strong>6:24</strong>PM</p>";
}
#Html.ActionLink( txt, "Edit", new { id = item.SysID })
</li>
}
Thanks, I appreciate your help
Brian
I'm not sure it's possible to use Html.ActionLink to build such a complex action link. That said, the Html Helpers are just supposed to be helper functions to make your life easier by giving you shortcuts to render HTML in ways commonly required. You don't need to use them. In this case, I think instead you should use a normal html tag, and Url.Action to create the correct URL.
If you wanted to include this information within an enumerable model I'd probably do something like:
#foreach (var item in Model) {
<li><a href="#Url.Action(item.Action)">
<h3>#item.Name</h3>
<p><strong>#item.Title</strong></p>
<p>#item.Message</p>
<p class="ui-li-aside"><strong>#item.Time</strong>#item.TimePeriod</p>
</a></li>
}
Note: the function you were looking for to display contents without encoding them is #Html.Raw
In answer to my other 'half question' I found this resource...
http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx
I believe the "razor delegate" item there at the bottom would fit the need I had.
#{
Func<dynamic, object> b =
#<strong>#item</strong>;
}
#b("Bold this")

pref#item.Id is content with razor, I need it code

I'm doing something like
#foreach (var item in Model)
<li id='pref#item.Id' >
..
the problem is that it's rendered as content 'pref#item.Id' the item.Id is not evaluated, anybody knows a way out of this ?
Razor thinks you're trying to render an email address. Try one of these two approaches:
<li id='pref#(item.Id)'>
<li id='<text>pref</text>#item.Id'>
See this handy quick reference by Phil Haack for more tips:
http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

ASP.NET MVC Razor Concatenation

I'm trying the render an HTML list that looks like the following, using the Razor view engine:
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
</ul>
The code that I am attempting to use to render this list is:
<ul>
#foreach (var item in Model.TheItems)
{
<li id="item_#item.TheItemId">Item #item.TheItemId</li>
}
</ul>
The parser is choking, because it thinks that that everything to the right of the underscore in the id attribute is plain text and should not be parsed. I'm uncertain of how to instruct the parser to render TheItemId.
I don't want to but a property on the model object that includes the item_ prefix.
I also have to keep this syntax as I am using the list with JQuery Sortable and with the serialize function that requires the id attribute to be formatted in this syntax.
You should wrap the inner part of the call with ( ):
<li id="item_#(item.TheItemId)">
How about using String.Format? like this:
<li id="#String.Format("item_{0}", item.TheItemId)">
I prefer:
<li id="#String.Concat("item_", item.TheItemId)">
The verbosity tells the support developers exactly what is happening, so it's clear and easy to understand.
You can even use this way to concat more strings:
<li id="#("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>
Here is another post.
Hope helps someone.
You can so this in a simpler way:
id="item_#item.TheItemId"
This post seems to be older but now this does works now in latest MVC:
id="item_#item.TheItemId"

Resources