Link to home
Start Free TrialLog in
Avatar of digitalwise
digitalwise

asked on

Convert VB to C#

We have this old code from an ASP website that we are moving over to ASP.NET C# - we are trying to make minimal changes to the old pages since it wasn't part of the contract but we need to swap this out to C# since all of the new stuff is in it.   I have part of it but not the loop piece.

Old code
 For a = 1 to Request.Form("propertyid").Count
strSQL = "Insert into property_assign (assigned_to, propertyid) VALUES ("
strSQL = strSQL & "'" & Request.Form("assigned_to") & "',"
strSQL = strSQL & "'" & Request.Form("propertyid")(a) & "')"

Open in new window


The start of my new code:
foreach (var Properties in Request("propertyid")) { 
            sql2 = "Insert into property_assign (assigned_to, propertyid) VALUES (@0, @1)";
            db.Execute(sql2, Request.Form("username"), Properties.propertyid);

Open in new window


I get Non-invocable member 'WebPageRenderingBase.Request' cannot be used like a method.
Avatar of zephyr_hex (Megan)
zephyr_hex (Megan)
Flag of United States of America image

Use [] instead of () in C#.  So, for example, use

Request["propertyid"]

Open in new window


instead of

Request("propertyid")

Open in new window


You'll need to do the same with
Request.Form("username")

Open in new window

Avatar of William Domenz
Not a web guy here but -
Are you missing the count?

Request("propertyid")
or
Request("propertyid").Count
or
Request("propertyid").Count()
something like that maybe
Avatar of digitalwise
digitalwise

ASKER

Ah yes!   That was dumb since i have written tons of code today - don't know why I missed it.   So now I get

 'char' does not contain a definition for 'propertyid' and no extension method 'propertyid' accepting a first argument of type 'char' could be found (are you missing a using directive or an assembly reference?)

var Properties in Request["propertyid"]

Open in new window


I am not sure how to write that - basically looking for each item in the list from the Request["propertyid"] form field.
Request.Form["propertyid"].Length
BillyDvD - what is that replacing?
Sorry - posted to soon - lol
You need to iterate 'something' that something was originaly the Count for "propertyid" -

So :
for (int i = 0; i < Request.Form["propertyid"].Length; i++)
{
       //---| Do you r string building here |---
}
i may need to be 1 for the for loop instead of zero.....
BillyDvD - how do I reference the value to save it though?   I need the value of each iteration.
for ( int i = 0 ; i < this.Request.Form[ "propertyid" ].Length ; i++ )
            {
                string strSQL = "Insert into property_assign (assigned_to, propertyid) VALUES ('" + this.Request.Form[ "assigned_to" ] + "','" + this.Request.Form[ "propertyid" ][ i ] + "')";
                //---| Now use the string..... |---
            }

It is the [i] now - it was (a)

Open in new window

That is giving me integers and not the actual value...

sql2 = "Insert into property_assign (assigned_to, propertyid) VALUES (@0, @1)";
                db.Execute(sql2, this.Request.Form["username"], this.Request.Form["propertyid"][i]);

Open in new window

I just looked at this more closely - this is a comma-delimited list of items - they are longer than one character so the length thing isn't going to work.  IT looks like
Asdasd_123123, ASD_54123, FAS_2141...
Not sure if this will help:

 string strSQL = string.Empty;

            if ( this.Request.Form[ "propertyid" ].Length > 0 )
                strSQL = "Insert into property_assign (assigned_to, propertyid) VALUES ('" + this.Request.Form[ "assigned_to" ] + "','" +
                     this.Request.Form[ "propertyid" ] + "')";

Open in new window

Do you need to iterate each piece of the comma delimeted list?
I am not sure what you are trying to "get" from this loop.
If you had the input to the loop and the outputs pre code change - then we can reverse engineer this much easier.
I need the values from the list because we are creating a record for each of the properties.    The code was super simple in VB...  

 For a = 1 to Request.Form("propertyid").Count
strSQL = "Insert into property_assign (assigned_to, propertyid) VALUES ("
strSQL = strSQL & "'" & Request.Form("assigned_to") & "',"
strSQL = strSQL & "'" & Request.Form("propertyid")(a) & "')"

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of William Domenz
William Domenz
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
digitalwise - Just to let you know, I may not be available the rest of this evening. I may be able to pick this back up around 6AM CST though.

Thanks
BillyDvD
This was perfect!