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.
C#.NET Programming

Avatar of undefined
Last Comment
digitalwise

8/22/2022 - Mon
zephyr_hex (Megan)

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

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
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.
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
William Domenz

Request.Form["propertyid"].Length
digitalwise

ASKER
BillyDvD - what is that replacing?
William Domenz

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 |---
}
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
William Domenz

i may need to be 1 for the for loop instead of zero.....
digitalwise

ASKER
BillyDvD - how do I reference the value to save it though?   I need the value of each iteration.
William Domenz

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

Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
digitalwise

ASKER
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

digitalwise

ASKER
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...
William Domenz

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

⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
William Domenz

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.
digitalwise

ASKER
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
William Domenz

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
William Domenz

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
Your help has saved me hundreds of hours of internet surfing.
fblack61
digitalwise

ASKER
This was perfect!